gpt4 book ai didi

list - Prolog中列表的偶数和奇数之和

转载 作者:行者123 更新时间:2023-12-01 01:12:23 26 4
gpt4 key购买 nike

我需要做的是编写一个谓词,它接受一个数字列表并返回一个由两个元素组成的列表,第一个是偶数之和,第二个是奇数之和。

例如:

?- sum([5,4,9,8,1,7], L).
L = [12, 22].

到目前为止我已经写了:

iseven(N) :-
0 is mod(N,2).

最佳答案

因为你已经定义了 iseven/2 你可以像这样使用它:

sum([],[0,0]).
sum([H|T],[N1,N2]):-
sum(T,[N3,N4]),
( iseven(H)

-> N1 is N3+H, N2 is N4
; N2 is N4+H, N1 is N3

).

例子:

?-sum([5,4,9,8,1,7], L).
L = [12, 22].

使用不同子句的非 if-then-else 版本:

sum([],[0,0]).
sum([H|T],[N1,N2]):- sum(T,[N3,N2]), iseven(H), N1 is N3+H.
sum([H|T],[N1,N2]):- sum(T,[N1,N3]), \+ iseven(H), N2 is N3+H.

关于list - Prolog中列表的偶数和奇数之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44473474/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com