我在尋找一個機會,切片名單成更小的列表,像:序言:片大名單中較小的單獨列表
[1,2,3,4] -> [[1,2],[2,3],[3,4]]
[1,2] -> [[1,2]]
等..
首先,我搜索用於構建謂詞的解決方案。但我無法想出它與他們一起做。這是正確的?! 所以我寫了一個自己的斷言:
slice([],[]).
slice([H1,H2|T], Output) :-
append([H2],T,New),
slice(New, [[H1,H2]|Output]).
但在過去的迭代步驟,當新的僅包含一個元素,用統一的[H1,H2 | T]失敗..
從這個問題你的第二個替代方案不符合測試的例子。 –
@SergeyDymchenko - 由於OP沒有給出一個單一元素列表的例子,儘管他暗示它是問題所在,我更懷疑這是她的分析沒有考慮的特殊情況。無論是哪種情況,問題都沒有指定對單個元素列表的期望處理:單個元素是否應該導致失敗,從結果集中排除或作爲短子列表包含在結果集中。 –
在單個元素上不存在失敗的可能性,因爲如果從任何更長的列表開始,您總是會遇到單元素列表。 –