私はプロローグ プログラミングの初心者で、簡単な質問をするだけです。
次のように、プロローグでリストを左に回転させたい:
rotatelist([1,2,3,4],R)
R=[2,3,4,1]
次のコードを試しました:
rotatelist([],[]).
rotatelist([H1|T1],[H2|T2]) :- rotatelist(H1,T2).
私はプロローグ プログラミングの初心者で、簡単な質問をするだけです。
次のように、プロローグでリストを左に回転させたい:
rotatelist([1,2,3,4],R)
R=[2,3,4,1]
次のコードを試しました:
rotatelist([],[]).
rotatelist([H1|T1],[H2|T2]) :- rotatelist(H1,T2).
再帰を使用する理由..これは、頭を尾の最後に移動するだけの場合ではありませんか?
rotatelist([H|T], R) :- append(T, [H], R).
このようなものは、トリックを行う必要があります:
rotatelist(List, R):- rotatelist(List, R1, H), R = [H|R1].
rotatelist([H], [], H).
rotatelist([H|T], L, R) :- rotatelist(T, T1, R), L = [H|T1].
回転リスト ([H|T]、R) :- 追加 (T、[H]、R1)、回転リスト 2 (R1、R)。 回転リスト_2(R,R)。 回転リスト_2(R1、R) :- 回転リスト(R1、R)。