¿Cómo convertir movimientos PGN a notación algebraica larga (en python)?

12

Quiero leer un archivo PGN y luego avanzar a un cierto número de movimiento, y alimentarlo a un motor UCI. Resulta que los motores funcionan con notación algebraica larga, y los PGN son algebraicos cortos. ¿Cuál es una manera fácil de hacer la conversión? es decir, de SAN a LAN.

Me doy cuenta de que generar una notación algebraica larga requiere conocer el estado del tablero y las reglas de ajedrez, ¡así que no quiero volver a escribirlo todo! Seguramente algo como esto ya debe existir, ya sea un programa de línea de comandos o un módulo (preferiblemente en Python).

multiplicación rápida
fuente
2
Esta pregunta parece estar fuera de tema porque se trata de programación, no de ajedrez.
Tony Ennis
3
AFAIK, la meta discusión más explícita que ha habido que es pertinente a si esto es sobre el tema es meta.chess.stackexchange.com/q/100/167 . El consenso en ese momento parecía ser que algo como esto debería considerarse sobre el tema. (Nota: no estoy discutiendo de una forma u otra, así que no lo hable conmigo. Pero siéntase libre de contribuir a ese hilo meta.)
ETD

Respuestas:

7

¿Sería esto lo que estás buscando? PGN-extract (Una utilidad de línea de comando) http://www.cs.kent.ac.uk/people/staff/djb/pgn-extract/

Puedo ver una bandera en el documento de características que podría ayudar:

  • -W[cm|epd|halg|lalg|elalg|san|uci]- especifique el formato de salida que se utilizará con
    -Whalgguión largo algebraico.
    -WlalgAlgebraico largo
    -Welalg[PNBRQK]es realzado algebraico largo. Usa los caracteres PNBRQK para el lenguaje
shivsky
fuente
2
La mejor opción para la persona que preguntó es probablemente -Wucisi quieren alimentarlo a un motor UCI.
Vegard el