¿Cuántos movimientos de ajedrez posibles hay?
Partiendo de la posición inicial estándar, ¿cuántos movimientos de ajedrez legales posibles hay en esta y en todas las siguientes posiciones posibles?
Digamos, ignorando la posición inicial, un alfil puede moverse a 32 casillas (pero el otro cubre las otras 32), una torre a 64, si se tienen en cuenta ambos lados, los peones también pueden llegar a las 64 casillas, un caballo , un rey y la reina también puede alcanzar las 64 posiciones.
Entonces, en resumen, eso debería ser 384 combinaciones totales de movimiento objetivo-cuadrado + pieza. ¿Es esto correcto?
Pero, ¿cuál es el número de movimientos si no se ignora la posición inicial?
Luego, se deben agregar 16 avances de doble paso de peones, más 4 movimientos de enroque (2, dama y flanco de rey para cada jugador). Y de paso, que debería ser 7 a la izquierda y 7 a la derecha, multiplicado por 2 para ambos jugadores. ¡Y todas las posibles combinaciones de cuadrados de origen y destino de todas las demás piezas!
Respuestas
El rey blanco puede moverse a 8 campos de los 36 campos internos, a 4 campos de los 4 campos de las esquinas y a 5 campos de los 24 campos de límites restantes. Eso es 420 movimientos para el rey blanco, agregue 2 para que los enroques lleguen a 422. Si distingue las capturas, esto casi se duplica (el enroque no puede capturar) a 842. Ahora, ¿permite que el rey negro duplique esto (1684)? ¿O identificar movimientos que ambos podrían hacer (es decir, todos menos enroque - 844)?
Una torre siempre puede (dada la línea de visión libre) moverse a 14 casillas. Son 896 movimientos. Doble a 1792 si distingue capturas. Doble de nuevo (3584) si desea distinguir el color.
En una diagonal (NW a SE, digamos) de longitud n , un alfil puede hacer n ( n -1) movimientos (elija un campo de inicio y un campo de fin distinto). Suma n = 1,2,3,4,5,6,7,8,7,6,5,4,3,2,1 (es decir, ignorando el color del alfil) para llegar a 280 movimientos, doble a 560 para contar ambas direcciones diagonales. Doble (1120) si quiere distinguir capturas, doble una vez más (2240) si quiere distinguir por color.
Para la dama, simplemente agregue la torre y el alfil, contando así 1456, 2912 o 5824 movimientos.
El caballo normalmente puede hacer 8 movimientos, pero al igual que con el rey, tenemos que tener en cuenta el límite cercano. Es más fácil contar por dirección: hay 42 (6 por 7) campos desde donde podemos ir dos hacia la derecha y uno hacia arriba, digamos. Tenemos el mismo número 42 (aunque con diferentes campos) para las ocho direcciones, por lo tanto, un total de 336 movimientos de caballo. Doble (672) si distingue capturas. Doble de nuevo (1344) si distingue por color.
Un peón blanco puede avanzar dos campos desde su posición inicial (8 movimientos). Puede avanzar uno de las filas 2 a 6 (40 movimientos). Puede avanzar desde la fila 7 y ascender a reina, torre, alfil o caballo (32 movimientos). Para los peones, debemos distinguir las capturas: en solo siete de las ocho columnas, podemos capturar a la derecha, y en siete de las ocho columnas podemos capturar a la izquierda. Esto nos da 70 movimientos de captura de las filas 2 a 6, más 56 capturas con promoción. Hasta ahora 206. Si quieres distinguir la captura al paso de una captura normal por el mismo movimiento (campo de inicio y fin) del peón, suma 14 para llegar a 220. De nuevo, al menos para los peones parece útil distinguir por jugador y llega a 440.
En resumen, la forma más generosa de contar movimientos posibles podría llevar a 1684 + 3584 + 2240 + 5824 + 1344 + 440 = 15116 movimientos distintos. Se podría aumentar aún más el número distinguiendo movimientos que dan jaque o incluso jaque mate, o distinguiendo capturas según la pieza capturada.
Si se da el tablero y solo se consideran el cuadro de origen y destino, así como la opción de promoción (como en el formato UCI ), entonces parece que habrá 1968 movimientos posibles.
# Python
# pip install python-chess
import chess
moves = 0
# Queen, covers all lines and diagonals
for x in range(8):
for y in range(8):
board = chess.Board("8/8/8/8/8/8/8/8")
board.set_piece_at(chess.square(x,y), chess.Piece(chess.QUEEN, chess.WHITE))
moves += len(list(board.generate_legal_moves()))
# Knight jumps
for x in range(8):
for y in range(8):
board = chess.Board("8/8/8/8/8/8/8/8")
board.set_piece_at(chess.square(x,y), chess.Piece(chess.KNIGHT, chess.WHITE))
moves += len(list(board.generate_legal_moves()))
# Straight pawn promotions, 2 players, 8 ranks each, 4 choices (queen, rook, bishop, knight)
moves += 2*8*4
# Diagonal pawn promotions, when capturing a piece
# 2 players, 14 diagonals (12 in the center and 1 each in the first and last ranks), 4 choices
moves += 2*14*4
print(moves)
Se supone que el enroque se indica moviendo el rey dos pasos.
Aquí están todas las cadenas UCI posibles y aquí está el código para generarlas.