Prolog是明显不同于之前的几种编程语言,它使用的是逻辑范式,使用谓词演算来计算。...比如这里如果我想查4个盘的汉诺塔,从柱1移到柱3,
?- hanoi(4,1,3,2,S),write(S),!....我在这里加了一个谓词turn,而[[FROM,BUFFER],[BUFFER,TO],[TO,FROM]]代表着转化规则FROM=>BUFFER,BUFFER=>TO,TO=>FROM,通过规则把S2转换成...turn_list谓词还是太复杂,继续降阶,我们再定义一个谓词turn_one,它只是用来转换单个元素的。
比如turn_one(1, [[1,10]], 10).
...思考
我还是留下几个思考给读者:
1.可不可以证明对于n个盘,上述的2n-1步是最少的移动步数?
2.可以证明“现实中的玩法”的正确性吗?