PROLOG-拆分列表

时间:2018-10-31 16:47:11

标签: list prolog

我正在使用SWI-PROLOG,但无法通过这种方式拆分列表:

L = [a,b,c,d].

RESULT = [[a,b],[b,c],[c,d]].

我正在尝试在C / Java / etc中解决这个问题。种方式,但我无处可去。

在这个简单的事情上,我将不胜感激,谢谢!

1 个答案:

答案 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]|[]] 

,依此类推。 最好的方法是观察跟踪。