リストのすべての要素をその深さでインクリメントしようとしています。例えば:
foo([0, 0, [0]], [1, 1, [2]]) -> true
また、組み込みの Prolog リスト述語なしでそれを行いたいと思います。これを解決する方法についてのアイデアはありますか?
divide_half については、2 つのことを確認する必要があります (これは独立して行うことができます): リストがある種の分割を定義していること、および分割の部分が十分に近い長さであることです。
2番目に、各要素を検索することから始め、それを変更して深さを追跡し、最後にそれを変更して、要素が変更されたリストのコピーを作成します(ただし、それが何を意味するのかはわかりません-何かを数値でインクリメントします)。
この定義は、組み込みの述語なしでリストを分割します。
halve(List, A, B) :- halve(List, List, A, B).
halve(B, [], [], B).
halve(B, [_], [], B).
halve([H|T], [_,_|T2], [H|A], B) :-
halve(T, T2, A, B).