gpt4 book ai didi

list - Prolog 中偶数之和、奇数乘积

转载 作者:行者123 更新时间:2023-12-02 20:41:15 26 4
gpt4 key购买 nike

我有一个数字列表,我需要计算列表中偶数的总和以及同一列表中奇数的乘积。我是 Prolog 的新手,到目前为止我的搜索没有成功。谁能帮我解决一下吗?

l_odd_even([]). 
l_odd_even([H|T], Odd, [H|Etail]) :-
H rem 2 =:=0,
split(T, Odd, Etail).
l_odd_even([H|T], [H|Otail], Even) :-
H rem 2 =:=1,
split(T, Otail, Even).

最佳答案

以下是对列表中偶数之和的建议:

even(X) :- 
Y is mod(X,2), % using "is" to evaluate to number
Y =:= 0.

odd(X) :- % using even
Y is X + 1,
even(Y).

sum_even(0, []). % empty list has zero sum
sum_even(X, [H|T]) :-
even(H),
sum_even(Y, T),
X is Y+H.
sum_even(X, [H|T]) :-
odd(H),
sum_even(X, T). % ignore the odd numbers

注意:我的Prolog已经氧化,所以可能有更好的解决方案。 :-)

注意:天啊! Prolog 似乎不支持语法高亮(参见 here ),所以我使用了 Erlang 语法。哈,确实有效。 :-)

在 GNU Prolog 中运行一些查询,我得到:

| ?- sum_even(X,[]).    
X = 0 ?
yes

| ?- sum_even(X,[2]).
X = 2 ?
yes

| ?- sum_even(X,[3]).
X = 0 ?
yes

| ?- sum_even(X,[5,4,3,2,1,0]).
X = 6 ?
yes

此处应用的想法应该使您能够提出所需的产品。

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

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