首页 > 解决方案 > PROLOG - 拆分列表

问题描述

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

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

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

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

对于这个简单的问题,我将不胜感激,谢谢!

标签: listprolog

解决方案


一种可能的解决方案是: 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]|[]] 

等等。最好的方法是观察痕迹。


推荐阅读