これは、私が行ったサンプル試験の問題でした。
引数としてリストを取り、ペアになった要素からなるリストを結果として返す Prolog 述語 split_into_pairs の定義を与えます。たとえばsplit_into_pairs([1,2,3,4,5,6],X)
、結果として返されX=[[1,2],[3,4],[5,6]]
ます。同様に、split_into_pairs([a,2,3,4,a,a,a,a],X)
would return as result X=[[a,2],[3,4],[a,a],[a,a]]
while split_into_pairs([1,2,3],X)
would return No
.
組み込みの述語を使用して実行することを意図したものではないと思いますが、120 点中 8 点しかないので、それほど複雑にする必要はありません。
2 つの要素のリストに対して何をすべきかわからないので、no を返すように指定されていないか、split_into_pairs([A,B],[[A,B]])
.
私の主な問題は、再帰呼び出しを適切に行う方法であり、余分な括弧を使用せず、X=[[A,B],[[C,D],[[E,F]]]]
? のような結果にならないようにすることです。
私の最近の試みは以下のコードのバリエーションでしたが、明らかにこれは正しくありません。
split_into_pairs([A,B],[A,B])
split_into_pairs([A,B|T], X) :- split_into_pairs(T, XX), X is [A,B|XX]