私はプロローグプログラミングでは本当に新しいので、簡単な質問をすることができます。プロローグでリストをローテーションする方法は?
私は、次のようなプロローグで左にリストを回転させるようにしたい:
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(List, R):- rotatelist(List, R1, H), R = [H|R1].
rotatelist([H], [], H).
rotatelist([H|T], L, R) :- rotatelist(T, T1, R), L = [H|T1].
rotatelist([H|T],R) :- append(T,[H],R1),rotatelist_2(R1,R). rotatelist_2(R,R). rotatelist_2(R1,R) :- rotatelist(R1,R).
'rotatelist([1,2]、L)、false.'は終了しません。 – false
recursiを使用する理由頭を尾の端に動かすだけのケースじゃない?
rotatelist([H|T], R) :- append(T, [H], R).
これは正解とマークされ、引数の順序に応じて右または左に回転するのに使用できます。 –
返信いただきありがとうございます。 – Mahdi
'rotatelist(L、[1,2])、false.'は終了しません。 magusの解を参照してください。 – false