list - PROLOG - 拆分列表
问题描述
我正在使用 SWI-PROLOG,但无法以这种方式拆分列表:
L = [a,b,c,d].
RESULT = [[a,b],[b,c],[c,d]].
我试图在 C/Java/etc 中解决这个问题。一种方式,但我无处可去。
对于这个简单的问题,我将不胜感激,谢谢!
解决方案
一种可能的解决方案是:
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]|[]]
等等。最好的方法是观察痕迹。
推荐阅读
- r - R / Shiny promises和futures不适用于httr
- javascript - 倒计时计时器未在动态创建的元素内更新
- python - 如何删除超过 3 列中具有相同值的行
- excel - 如何使用按钮隐藏另一张工作表中的行
- javascript - 用户滚动到页面底部时的性能问题
- android - “支持文件应使用完全相同的版本”Android Studio 错误
- soapui - 如何使用 SoapUI 刷新 redis 缓存
- facebook - 导入 Facebook 事件
- awk - 只计算正数的出现次数
- angularjs - Angularjs如何在Ajax调用后重定向到UI状态