gpt4 book ai didi

prolog - 如何创建与特定数字相加的数字列表

转载 作者:行者123 更新时间:2023-12-04 11:29:35 25 4
gpt4 key购买 nike

我需要一些帮助在 Prolog 中编写一个谓词,给定一个数字作为输入,返回一个列表列表,其中的数字相加。

让我们调用谓词 addUpList/2 ,它应该像这样工作:

?- addUpList(3,P).
P = [[1,2], [2,1], [1,1,1]]. % expected result

我很难弄清楚这一点,我开始认为这是不可能的。有任何想法吗?提前致谢。

最佳答案

尝试这个:

condense([], Rs, Rs).
condense([X|Xs], Ys, Zs) :-
condense(Xs, [X|Ys], Zs).
condense([X, Y|Xs], Ys, Zs) :-
Z is X + Y,
condense([Z|Xs], Ys, Zs).

condense(Xs, Rs) :-
condense(Xs, [], Rs).

expand(0, []).
expand(N, [1|Ns]) :-
N > 0,
N1 is N - 1,
expand(N1, Ns).

addUpList(N, Zs) :-
expand(N, Xs),
findall(Ys, condense(Xs, Ys), Zs).

让我知道我得到了什么分数。 :-)

关于prolog - 如何创建与特定数字相加的数字列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6825218/

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