aboutsummaryrefslogtreecommitdiff
path: root/problem45.erl
diff options
context:
space:
mode:
Diffstat (limited to 'problem45.erl')
-rwxr-xr-xproblem45.erl20
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)).