diff options
Diffstat (limited to 'problem45.erl')
-rwxr-xr-x | problem45.erl | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/problem45.erl b/problem45.erl new file mode 100755 index 0000000..344d023 --- /dev/null +++ b/problem45.erl @@ -0,0 +1,20 @@ +-module(problem45). +-export([solve/1]). + +triangles(M) -> [ (N * (N + 1)) div 2 || N <- lists:seq(1,M) ]. +pentagons(M) -> [ (N * ((3 * N) - 1)) div 2 || N <- lists:seq(1,M) ]. +hexagons(M) -> [ N * ((2 * N) + 1) || N <- lists:seq(1,M) ]. + +max(M) -> M * ((2 * M) + 1). + +nums(M) -> + T = triangles(M), + P = pentagons(M), + H = hexagons(M), + [ X || X <- lists:seq(1,max(M)), lists:member(X,T), lists:member(X, P), lists:member(X,H) ]. + +getnext([_]) -> "Keep trying."; +getnext([40755,X|_]) -> X; +getnext([_|T]) -> getnext(T). + +solve(M) -> getnext(nums(M)). |