diff options
author | Nathan Lasseter <nathan.je.lasseter@googlemail.com> | 2009-10-04 00:56:56 +0100 |
---|---|---|
committer | Nathan Lasseter <nathan.je.lasseter@googlemail.com> | 2009-10-04 00:56:56 +0100 |
commit | 0248ed34ce3d05228bc5084669c3a27933be0c2e (patch) | |
tree | b9c4990344b0863a2af851b5917c49f3a5f03e6b /problem56.erl | |
parent | 00686037d57eb0a0d5eba6eeb6fcc9692e8b59f6 (diff) |
first commit
Diffstat (limited to 'problem56.erl')
-rwxr-xr-x | problem56.erl | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/problem56.erl b/problem56.erl new file mode 100755 index 0000000..416bdbd --- /dev/null +++ b/problem56.erl @@ -0,0 +1,26 @@ +-module(problem56). +-export([solve/0]). + +solve() -> + lists:max(gen_sums(99)). + +gen_sums(M) -> + [digital_sum(X) || X <- gen_list(M)]. + +gen_list(M) -> + L = lists:seq(1,M), + [pow(A,B) || A <- L, B <- L]. + +digital_sum(Number) when is_integer(Number) -> + digital_sum(integer_to_list(Number)); +digital_sum([]) -> + 0; +digital_sum([H|T]) -> + (H-48) + digital_sum(T). + +pow(_,0) -> + 1; +pow(B,1) -> + B; +pow(B,E) -> + B * pow(B,E-1). |