challenges/e1.pl

14 lines
501 B
Prolog

range(End, End, []) .
range(Start, End, [Start| Acc]) :- Next is Start + 1, range(Next, End, Acc).
divisors_3_5([], []).
divisors_3_5([X|Xs], [X|Ys]) :- 0 is X rem 3, divisors_3_5(Xs, Ys).
divisors_3_5([X|Xs], [X|Ys]) :- 0 is X rem 5, divisors_3_5(Xs, Ys).
divisors_3_5([X|Xs], Ys) :- divisors_3_5(Xs, Ys).
sum(List, Result) :- sum(List, 0, Result).
sum([], Acc, Acc).
sum([X|Xs], Acc, Num) :- Inc is X + Acc, sum(Xs, Inc, Num).
e1(Result) :- range(1,1000, R), divisors_3_5(R, Ds), sum(Ds,Result).