Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Erlang 1.18 KB | None | 0 0
  1. -module(prog3).
  2. -compile([export_all]).
  3.  
  4. przetwarzaj(Lista,From) ->
  5.     PosortowanaLista = lists:sort(Lista),
  6.     From ! {posortowana, PosortowanaLista}.
  7.    
  8. make(1, ListaLiczb, Zbieracz) -> spawn(?MODULE, przetwarzaj, [ListaLiczb,Zbieracz]);
  9. make(N, ListaLiczb, Zbieracz) ->
  10.     {L1, Reszta} = lists:split(length(ListaLiczb) div N , ListaLiczb),
  11.     spawn(?MODULE, przetwarzaj, [L1,Zbieracz]),
  12.     make(N-1, Reszta, Zbieracz).
  13.    
  14. generujListe(0) -> [];
  15. generujListe(N) ->
  16.     [random:uniform(100) | generujListe(N-1)].
  17.    
  18. wypisz([]) -> io:format("\n");
  19. wypisz([H|T]) ->
  20.     io:format("~p ",[H]),
  21.     wypisz(T).
  22.     %io:format("Dostalem ~p przetworzonych liczb\n",[length(Lista)]).
  23.  
  24. merge(L1,[], Suma) -> Suma ++ L1;
  25. merge([],L2,Suma) -> Suma ++ L2;
  26. merge([H1|T1], [H2|T2], Suma) ->
  27.     if
  28.         H1 < H2 -> merge(T1,[H2|T2], Suma ++ [H1]);
  29.         true -> merge([H1|T1],T2, Suma ++ [H2])
  30.     end.
  31.    
  32. odbierz(PosortowanaLista) ->
  33.     receive
  34.         {posrtowana, Lista} ->
  35.             Zlaczona = merge(PosortowanaLista, Lista, []),
  36.             odbierz(Zlaczona)
  37.         after
  38.             200 -> wypisz(PosortowanaLista)
  39.     end.
  40.  
  41. main() ->
  42.     ListaLiczb = generujListe(101),
  43.     ZbieraczWynikow = spawn(?MODULE, odbierz,[[]]),
  44.     make(10,ListaLiczb,ZbieraczWynikow).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement