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