你好,我有一個問題,我執行的河內塔。 我需要用必要的移動打印列表清單,但是我的算法在光盤數N = 1時正常工作。 這是我的代碼河內之門prolog
move(1,X,Y,_,L) :-
append([X],[Y],L).
move(N,X,Y,Z) :-
N>1,
M is N-1,
move(M,X,Z,Y),
move(1,X,Y,_),
move(M,Z,Y,X).
這是結果,當N = 1
?- move(1,left,right,_,L).
L = [left,right]
(16 ms) yes
我需要像這樣
L = [[left,center],[left,right],[center,right],[left,center],[right,left],
[right,center],[left,center],[left,right],[center,right],[center,left],
[right,left],[center,right],[left,center],[left,right],[center,right]]
當N = 4
請如果有人可以幫助我,我會成爲你的朋友。
如果這是你的代碼完全按照你已經在這裏表示,注意到move'的'第一條具有5個參數,而第二個子句只有4個參數。我幾乎可以肯定這是一個錯誤。 – 2016-10-11 08:47:35