任意のリストが対称かどうかをテストする方法はありますか?
例えば:
?- symmetric([a,b,b,a]).
true.
?- symmetric([a,b,c,a]).
false.
?- symmetric([a,a]).
true.
私の試みは、最初の要素を最後の要素と比較し、それらが等しい場合はそれらを削除してリストの残りの部分に進むことでした。それ以外の場合は失敗します。リストに 2 つの要素があり、それらが等しい場合に成功します。それ以外の場合は失敗します。
ただし、この述語を使用してリストの最後を「見つける」ことは、実際には効率的ではありません。
last(L,[L]).
last(L,[H|T]):-last(L,T).
これを行う良い方法を知っている人はいますか?どんな助けでも本当に感謝します!
ところで:要素の量が不均一なリストは気にしません。