Advertisement
Guest User

Untitled

a guest
Jan 13th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Erlang 0.93 KB | None | 0 0
  1. getGowno([]) -> [];
  2. getGowno([H]) -> [H];
  3. getGowno([H|Chuj]) -> Paths = lists:map(fun(X) -> deepMerge(H, getGowno(X)) end, Chuj), chooseLongest(Paths);
  4. getGowno(_) -> [].
  5.  
  6. deepMerge(_, []) -> [];
  7. deepMerge(X, [[H|T]|C]) -> [[X,H] ++ T] ++ deepMerge(X, C);
  8. deepMerge(X, [H|T]) -> [X,H] ++ T.
  9.  
  10. chooseLongest([]) -> [];
  11. chooseLongest([[H|T]|T2]) -> RestOfList = chooseLongest(T2),
  12.                             Length1 = deepLength([H|T]),
  13.                             Length2 = deepLength(RestOfList),
  14.                             if (Length1 > Length2) -> [H] ++ T;
  15.                             (Length1 == Length2) -> [[H] ++ T] ++ [RestOfList];
  16.                             true -> RestOfList end;
  17. chooseLongest([H|T]) -> [H|T].
  18.  
  19. deepLength([[H|T]|C]) -> getLonger(deepLength([H|T]), deepLength(C));
  20. deepLength([H|T]) -> length([H|T]);
  21. deepLength([]) -> 0;
  22. deepLength(_) -> 1.
  23.  
  24. getLonger(X,Y) when X >= Y -> X;
  25. getLonger(_,Y) -> Y.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement