我正在使用SWI-PROLOG,但无法通过这种方式拆分列表:
L = [a,b,c,d].
RESULT = [[a,b],[b,c],[c,d]].
我正在尝试在C / Java / etc中解决这个问题。种方式,但我无处可去。
在这个简单的事情上,我将不胜感激,谢谢!
答案 0 :(得分:3)
一个可能的解决方案是:
splitList([], []).
splitList([_], []).
splitList([A,B|T], R):- splitList([B|T], R1), R=[[A,B]|R1].
想法是您一直调用split,直到出现[X]的情况(列表中只有一个元素)
[a,b,c,d] ->
[b,c,d] ->
[c,d] ->
[d]
此刻,您进入第二种情况,回溯开始
R1 = [] => R = [[c,d]|[]]
,依此类推。 最好的方法是观察跟踪。