gpt4 book ai didi

Prolog:在较小的单独列表中切片大列表

转载 作者:行者123 更新时间:2023-12-02 00:08:37 26 4
gpt4 key购买 nike

我正在寻找机会将列表分成更小的列表,就像这样:

[1,2,3,4] -> [[1,2],[2,3],[3,4]]
[1,2] -> [[1,2]]

等等..

首先,我搜索了一个带有内置谓词的解决方案。但我无法弄清楚如何与他们一起做……这是对的吗?!所以我写了一个自己的谓词:

slice([],[]).
slice([H1,H2|T], Output) :-
append([H2],T,New),
slice(New, [[H1,H2]|Output]).

但是在最后一个迭代步骤中,当New只包含一个元素时,无法与[H1,H2|T]合一..

最佳答案

根据定义slice/2 mapadj/3串联Prolog lambdas !简单地写:

slice(Xs,Yss) :-
mapadj(\X0^X1^[X0,X1]^true, Xs, Yss).

示例查询:

?- slice([1,2],Yss).
Yss = [[1,2]].

?- slice([1,2,3,4],Yss).
Yss = [[1,2],[2,3],[3,4]].

关于Prolog:在较小的单独列表中切片大列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16847487/

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