【发布时间】:2019-03-28 23:02:05
【问题描述】:
我的任务是创建一个子列表列表,其中元素按连续顺序排序。我遇到了困难,因为当它遍历列表并返回带有列表的多个列表时,这不是我想要的。我的目标是一个包含多个长度为 3 的子列表的列表。
例子
list([]).
list([_|T]) :- list(T).
sublist(L, []) :- list(L).
sublist([HX|TX],[HX|TY]) :- sublist(TX,TY).
sublist([_|TY], X) :- X = [_|_], sublist(TY, X).
这会打印出每个子列表。
?- sublist([10,20,30,a,b], L).
L = [] ;
L = [10] ;
L = [10, 20] ;
L = [10, 20, 30] ;
L = [10, 20, 30, a] ;
L = [10, 20, 30, a, b] ;
L = [10, 20, 30, b] ;
..and so on
我想要的是这样的
?- sublist([10,20,30,a,b], L).
L = [[10,20,30],[20,30,a],[30,a,b]]
我想我一直在想这件事,而其他事情 X = [_,_,_] 破坏了我的功能。
【问题讨论】:
标签: prolog