Prolog的行为

时间:2016-04-21 16:28:42

标签: prolog

我一直试图通过解决项目欧拉来学习Prolog。为了解决问题#1,我想出了以下内容。

divides(X,Y) :- Y mod X =:= 0.

sumlist([],0).
sumlist([H|T],X) :-
    sumlist(T,Y), X is Y + H.

mult_3_or_5(X) :- between(1,999,X),
                  (divides(3,X); divides(5,X)).

find_sum(Z) :- findall(X,mult_3_or_5(X),Y),
               sumlist(Y,Z).

这个问题在于它计算可被3和5两次整除的数字。我当然对Prolog如何运作有误解,我相信我需要使用cut运算符或类似的东西。我很欣赏对正在发生的事情的一个很好的解释。

0 个答案:

没有答案