Escriba el código más corto que calcule todos los movimientos (legales) posibles del jugador actual desde una cadena FEN dada. ¿Qué es la cadena FEN? (Wikipedia)
- El código más corto gana, el idioma no importa.
- Los movimientos de salida deben obedecer las reglas de movimiento del ajedrez, excepto en passant , enroque y promoción de peones.
- Ignora el control, el jaque mate y el estancamiento, el rey no puede ser capturado en situaciones también.
Puede configurar las salidas de manera diferente según se desee (por ejemplo: A2-A4
, A2A4
, a2a4
, a2->a4
...)
Casos de prueba:
# ENTRADA 1: rnbqkbnr / pppppppp / 8/8/8/8 / PPPPPPPP / RNBQKBNR w KQkq - 0 1
# SALIDA 1 A2-A4, A2-A3, B2-B4, B2-B3, C2-C4, C2-C3, D2-D4, D2-D3, E2-E4, E2-E3, F2-F4, F2-F3, G2-G4, G2-G3, H2-H4, H2-H3, B1-A3, B1-C3, G1-F3, G1-H3
# ENTRADA 2 7k / 8/8/8/8/8 / PP6 / Q1q4K w - - 0 1
# SALIDA 2 A1-B1, A1-C1, A2-A3, A2-A4, B2-B3, B2-B4, H1-H2, H1-G1, H1-G2
Respuestas:
C - 391 bytes
Toma datos como argumentos de línea de comando e imprime en stdout con los cuadrados etiquetados de 0 a 63.
OK, tuve unos minutos, así que intenté eliminar todos los bits relacionados con la detección de cheques. Creo que ahora no es muy eficiente ...
Versión de detección de verificación de 478 bytes
fuente
also here is how test case input boards look like
). Dada la posición en la imagen, el resultado del caso de prueba original era correcto de acuerdo con las reglas.Java 1455
fuente
Python 553
649678La sangría de dos espacios es tab char, que ahorra 5 bytes.
Se me ocurre que es probable que pueda evaluar movimientos razonables a una capa decente y mantenerlo por debajo de 1024 bytes :) Empecé a buscar otras preguntas de ajedrez , pero no parece haber una pregunta del motor de ajedrez codegolf ...
fuente
B1C3
yH2H3
en el primer ejemplo que se muestra en la pregunta.H2H3
, quise decirG1H3
, en otras palabras, tus caballeros blancos solo giran a la izquierda.Python
638637 (482?) BytesNota: después de que
def O(y):
haya una nueva línea y un carácter de tabulación antesif
Nota: mediante el uso del módulo zlib es posible obtener un código fuente Python válido de 482 bytes simplemente comprimiendo la fuente real:
fuente
JavaScript (E6) 481
492 550Editar Se corrigió un error desagradable en el movimiento de caballeros. Mucho trabajo para mantener el byte cuenta igual.
(Sin contar los espacios iniciales y las nuevas líneas mantenidas para facilitar la lectura)
Menos golf
Prueba en la consola FireFox / FireBug
Salida
fuente
JAVA
631599594Se corrigió un error en la versión de 599 bytes (¡gracias Jack por señalar esto!) Y acorté el código a 594 bytes.
Compilar:
javac F.java
Ejecutar:
java F 6pk/6pp/8/8/8/p7/PP4pp/Q2p2pK w - - 0 1
Salida:
B2B3 B2B4 B2A3 A1B1 A1C1 A1D1 H1H2 H1G1 H1G2
fuente
3Q4/p4r1k/P4pp1/4P3/5n2/3P4/4BbbP/RN3KN1 w - - 0 0
veo movimientosF1F2
oF1G2
el rey puede capturar?