2
我試圖做河內塔問題的,我所到目前爲止已經試過:漢諾塔(河內塔)
move(1,[H|T],B,C,A1,B1,C) :-
A1 = T,
B1 = [H|B].
move(N,A,B,C,A1,B1,C) :-
N>1,
M is N-1,
move(M,[H|T],C,B,A1,B1,C),
move(1,[H|T],B,_,A1,B1,C),
move(M,C,B,[H|T],A1,B1,C).
但是這個代碼不工作,我需要得到的結果是長相像這樣:
?-move(3,[1,2,3],[],[],A1,B1,C).
and the results:
A1=[].
B1=[1,2,3]
C=[].
有人可以幫我修復我的代碼,並可以得到這樣的結果嗎?這對我來說非常重要,我真的需要幫助。 這是我做的,但有一些問題:
move(N,[H|T],[],[],A1,B1,C) :-
N > 1,
M is N - 1,
move(N,[H|M],[H|_],[],A1,B1,C),
move(M,[_|M],[H|_],[H|_],A1,B1,C),
move(M,[_|M],[],[H|T],A1,B1,C),
move(M,[],[_|T],[H|T],A1,B1,C),
move(M,[H|_],[_|T],[H|T],A1,B1,C),
move(M,[H|_],[_|T],[],A1,B1,C),
move(M,[],[H|T],[],A1,B1,C).
move(N,[H|T],[],[]) :- write(A1), nl,
write(B1), nl,
write(C).
對不起,我標記錯了,這不是功課,是過去考試的一個問題。如果你能給我完整的答案,我會在下週參加考試。對不起, – user1400451
@ user1400451更新爲完整答案 –
我你可以用我的方式,但我不知道哪裏錯了,因爲我只是按照步驟編寫的代碼 – user1400451