您好,我在实施河内塔时遇到问题。
我需要打印包含必要动作的列表列表,但我的算法仅在光盘数量为 N=1 时才起作用。
这是我的代码
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]]
When N=4
如果有人可以帮助我,我将不胜感激。