gpt4 book ai didi

list - 将整数列表拆分为正整数列表和负整数列表

转载 作者:行者123 更新时间:2023-12-04 09:36:55 31 4
gpt4 key购买 nike

我一直在尝试在 Prolog 中创建一个谓词,它将整数列表分成正整数列表和负整数列表。

具有预期结果的示例查询:

?- split([1,-2,3,4,-8],X,Y).
X = [1,3,4],
Y = [-2,-8].

这是我到目前为止得到的代码:
split([], [], []).
split([Head|Tail], List1, List2) :- split(Tail, [Head|List1], List2), Head>=0.
split([Head|Tail], List1, List2) :- split(Tail, List1, [Head|List2]), Head<0.

我似乎无法弄清楚我做错了什么。

最佳答案

递归部分不太正确。

split([], [], []).
split([Head|Tail], [Head|List1], List2) :- Head>=0, split(Tail, List1, List2).
split([Head|Tail], List1, [Head|List2]) :- Head<0, split(Tail, List1, List2).
Head如果 Head >= 0,则应添加到肯定列表中和到负面 list 时 Head < 0 .

此外,检查 Head的标志一开始比较好,因为这样会防止不必要的递归调用。

关于list - 将整数列表拆分为正整数列表和负整数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9547062/

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