PROLOG列表内的整数和

时间:2019-12-10 05:03:26

标签: list function prolog sum add

我有功能列表

  

列表= [segmentTime(红色,a,c,2),segmentTime(绿色,c,e,3),segmentTime(绿色,e,h,4),segmentTime(蓝色,h,i,5)]

如何找到列表中所有元素的函数的整数部分的总和?

即总和= 2 + 3 + 4 + 5

谓词的摘要代码将非常有用。 在此先感谢:)

2 个答案:

答案 0 :(得分:0)

您会惊讶地发现答案如此简单。

sumList([],0).
sumList([segmentTime(_,_,_,X)|T],Z):- sumList(T,Z1),Z is Z1+X.

输出

?-sumList([segmentTime(red,a,c,2),segmentTime(green,c,e,3),segmentTime(green,e,h,4),segmentTime(blue,h,i,5)],M).
M=14

希望这对您有所帮助。

答案 1 :(得分:0)

另一个是使用库(lambda)

:- use_module(library(lambda)).

getList(L):-
 L = [segmentTime(red,a,c,2),segmentTime(green,c,e,3),segmentTime(green,e,h,4),segmentTime(blue,h,i,5)].

sumOfList(L, S) :-
   foldl(\X^Y^Z^(X = segmentTime(_,_,_,V), Z is Y + V), L, 0, S).

输出:

?- getList(L), sumOfList(L, S).
L = [segmentTime(red, a, c, 2), segmentTime(green, c, e, 3), segmentTime(green, e, h, 4), segmentTime(blue, h, i, 5)],
S = 14.