aboutsummaryrefslogtreecommitdiff
path: root/problem42.erl
blob: 1982f2b6b378f895f3e39a81caa34a5d2aede280 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
-module(problem42).
-export([solve/0]).
-import(problem42a,[getwords/0]).

solve() ->
	V = [value(X) || X <- getwords()],
	T = numbers(lists:max(V), 1, [1]),
	length([Y || Y <- V, lists:member(Y,T)]).

numbers(M,N,L) ->
	O = lists:max(L),
	if
		O >= M ->
			L;
		true ->
			numbers(M,N+1,[((N*(N+1)) div 2) | L])
	end.

value([H|T]) ->
	if
		(H > 64) and (H < 91) ->
			(H - 64) + value(T);
		(H > 96) and (H < 123) ->
			(H - 96) + value(T);
		true ->
			value(T)
	end;
value([]) ->
	0.