我正在用Python编写一个象棋程序,需要生成骑士的所有动作。对于那些不熟悉国际象棋的人来说,骑士是L形的。
因此,给定一个(2, 4)的位置,一个骑士可以移动到(0, 3)(0, 5)(1, 2)(3, 2,等等,总共(最多)八个不同的移动。
我想编写一个名为knight_moves的函数,在列表中生成这些元组。在python中,最简单的方法是什么?

def knight_moves(position):
    ''' Returns a list of new positions given a knight's current position. '''
    pass

最佳答案

为什么不存储它可以移入的相对对?所以从你的出发点开始,添加一组可能的移动,然后你只需要一个健全的检查,以确保它们仍然在边界内,或不在另一块。
即给定(2,4)起点,选项是(-2,-1),(-2,+1),(-1,+2),(+2,+1)
因此,相对位置总是相同的。

关于python - 如何生成骑士的所有 Action ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19372622/

10-11 20:51