我正在寻找机会将列表切成更小的列表,如下所示:
[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] 的统一失败..