0
我一直試圖通過自己的滑動拼圖版來實現,並且在擴展到較大尺寸之前一直使用較小尺寸的拼圖(2尺寸拼圖)。遞歸調用中的退回項目
,我已創建的序言代碼迄今是
move(1,2,0) :- true.
move(A,0,B) :- move(A,B,0),!,true.
move(0,A,B) :- move(A,0,B),!,true.
move(A,B,0) :- move(A,0,B),!,true.
對於2大小的難題我有,一個正確的解決難題被給定爲1,2,0。到目前爲止,我所得到的回報在確定一個有效的輸入是否能解決1,2,0的難題方面正確工作。
接下來我試圖實現的是返回導致正確拼圖的一組移動,並且我已經得到它的工作(儘管不完全)。
我修改上面的代碼:
move([X|X],1,2,0) :- true.
move([X],A,0,B) :- move([left|X],A,B,0),!,true.
move(0,A,B) :- move(A,0,B),!,true.
move(A,B,0) :- move(A,0,B),!,true.
當我鍵入移動(輸入,1,0,2),它正確地給了我[左]這是我所期望的,但是我不知道如何實現它,以便爲移動(1,2,0) - []和移動(0,1,2) - [左|左]提供正確的輸出。
我試過不同的各種編輯無濟於事。我希望得到一些幫助,以瞭解我所做的不正確。
謝謝!
沒有評論其他任何東西,原始問題和答案中的所有「真實」都沒有做任何事情。你可以安全地刪除它們。 –
我知道。我只是保留他們,因爲他們在問題。 – 2bigpigs
非常感謝!這很有意義。 – nelac123