0
我有列表中的序列例如L=[a,b,c,d,e,f]
,我想將此列表轉換爲具有此類型的新列表L2=[[a,b],[c,d],[e,f]]
,換句話說,我想將列表中的每兩個連續元素轉換爲新列表。我如何用Prolog解決這個問題?
我有列表中的序列例如L=[a,b,c,d,e,f]
,我想將此列表轉換爲具有此類型的新列表L2=[[a,b],[c,d],[e,f]]
,換句話說,我想將列表中的每兩個連續元素轉換爲新列表。我如何用Prolog解決這個問題?
純Prolog的,量身定製您的要求:
'convert every two consecutive element'([], []). % base case
'convert every two consecutive element'([A,B|R], [[A,B]|S]) :-
'convert every two consecutive element'(R, S).
表的長度必須是偶數這個成功,否則,你將需要改進的基本情況。
奇數列表: '每兩個連續元素轉換'([A],[]) –
@GuillermoMerino將刪除奇數奇偶校驗列表的最後一個元素。 OP沒有定義他們想要對一個奇怪的元素做什麼,但是可能合乎邏輯的事情就是將它包含爲一個單獨的子元素,「[A]」。因此,額外的基本情況是,'轉換每兩個連續的元素'([A],[[A]])。'然後,'轉換每兩個連續的元素'([a,b,c,d,e ],L).''將產生'L = [[a,b],[c,d],[e]]'而不是'[[a,b],[c,d]]''。 – lurker