我正在尝试创建一个列表列表,其中我的输入是一个大的扁平网格,我需要将网格中的元素调整为较小的列表。 例如,我有一个这样的列表:[1,2,3,4,5,6,7,8]我想创建列表列表[[1,2,3,4],[ 5,6,7,8]]在这种情况下,我将每个内部列表中的元素的大小调整为宽度(4)。如果我的列表只有7个元素,那么结果应该是[[1,2,3,4]],我应该忽略其余的,因为他们不会形成另一个宽度为4的列表。这是我的代码,我是在"全球堆栈中遇到问题"错误,我无法弄清楚。
代码:
list_to_llists([],W,L).
list_to_llists([H|T],W,[[X1]|[Xr]]):-
length([X1],R),
R<W,
append(X1,H,Rs),
list_to_llists(T,W,Rs).
list_to_llists([H|T],W,[[X1]|[Xr]]):-
length([X1],R),
R>=W,
append(Xr,H,Rs),
list_to_llists(T,W,Xr).
答案 0 :(得分:0)
list_to_llists(L,W,[S|R]):-
length(S,W),
append(S,T,L),
!, list_to_llists(T,W,R).
list_to_llists(L,_,[L]).
length(S,W)
生成自由变量列表,因此,如果此列表可以是前缀,则只存储在结果中。
您也可以尝试不切割,以更好地了解行为。