Advertisement
sek1pa

prison_notfinished

Jan 19th, 2018
494
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Erlang 0.97 KB | None | 0 0
  1. -module(solution).
  2. -export([main/0]).
  3.  
  4. pairs_is_equal([X,Y],[P,Q]) ->
  5.     P==X orelse Q==X orelse P == Y orelse Q==Y.
  6. main() ->
  7.     {ok,[Count]}=io:fread("","~d"),
  8.     {ok,[CountPairs]}=io:fread("","~d"),
  9.     Set=sets:new(),
  10.     main(CountPairs,Set).
  11.  
  12. main(CountPairs,Set) when CountPairs ==0 ->
  13.     parse_set(sets:new(),Set,sets:to_list(Set));
  14. main(CountPairs,Set) when CountPairs /=0 ->
  15.     {ok,[P,Q]}=io:fread("","~d~d"),
  16.     NewSet=sets:add_element([P,Q],Set),
  17.     main(CountPairs-1,NewSet).
  18.  
  19. parse_set(Set,Sorted,[]) ->
  20.     io:format("End~p~n",[sets:to_list(Set)]);
  21.  
  22. parse_set(New,Set,[H|Tail]) ->
  23.     PromData=sets:filter(fun(Elem) -> pairs_is_equal(Elem,H) end,Set),
  24.     Data=parse_subset(sets:to_list(PromData),Set),
  25.     io:format("Data~p~n",[sets:to_list(Data)]),
  26.     case sets:size(Data) > 0 of
  27.     true -> SortedSet=sets:subtract(Set,Data),
  28.         NewSet=sets:add_element(Data,New),
  29.         parse_set(NewSet,SortedSet,Tail);
  30.     false -> parse_set(New,Set,Tail)
  31.     end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement