%%% list comprehension examples %%% http://www.erlang.org/doc/programming_examples/list_comprehensions.html -module(lc). -compile(export_all). sort([Pivot|T]) -> sort([ X || X <- T, X < Pivot]) ++ [Pivot] ++ sort([ X || X <- T, X >= Pivot]); sort([]) -> []. perms([]) -> [[]]; perms(L) -> [[H|T] || H <- L, T <- perms(L--[H])]. sorted([]) -> true; sorted([X|L]) -> sorted(L,X). sorted([Head|_Tail], X) when X > Head -> false; sorted(L,_) -> sorted(L). permSort(L) -> Perms = perms(L), [X] = lists:filter( fun(L1) -> sorted(L1) end, Perms), X. pyth(N) -> [ {A,B,C} || A <- lists:seq(1,N), B <- lists:seq(1,N), C <- lists:seq(1,N), A+B+C =< N, A*A+B*B == C*C ]. pyth1(N) -> [ {A,B,C} || A <- safe_seq(1,N-2), B <- safe_seq(A+1,N-A-1), C <- safe_seq(B+1,N-A-B), A+B+C =< N, A*A+B*B == C*C ]. safe_seq(Min,Max) when Min > Max -> []; safe_seq(Min,Max) -> lists:seq(Min,Max). map( F, L) -> [ F(X) || X <- L ]. filter(Pred, L) -> [X || X <- L, Pred(X)]. append(L) -> [X || L1 <- L, X <- L1].