¿Cómo genero todos los movimientos de un caballero?

Estoy escribiendo un programa de Ajedrez en Python que necesita generar todos los movimientos de un caballero. Para aquellos que no están familiarizados con el ajedrez, un caballero se mueve en forma de L.

Por lo tanto, dada una posición de(2, 4) un caballero podría moverse a(0, 3), (0, 5), (1, 2), (3, 2), etc. para un total de (a lo sumo) ocho movimientos diferentes.

Quiero escribir una función llamadaknight_moves que genera estas tuplas en una lista. ¿Cuál es la forma más fácil de hacer esto en Python?

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

Respuestas a la pregunta(8)

Su respuesta a la pregunta