Como converter movimentos de PGN para notação algébrica longa (em python)?

12

Quero ler um arquivo PGN e, em seguida, avançar para um determinado número de movimentação e alimentá-lo para um mecanismo UCI. Acontece que os motores funcionam usando notação algébrica longa, e os PGNs são, em resumo, algébricos. Qual é uma maneira fácil de fazer a conversão? ou seja, de SAN para LAN.

Sei que gerar uma notação algébrica longa requer conhecimento das regras do xadrez e do estado do tabuleiro, por isso não quero escrever tudo de novo! Certamente algo assim já deve existir - um programa de linha de comando ou um módulo (de preferência em python).

multiplicação rápida
fonte
2
Esta questão parece estar fora de tópico, porque se trata de programação, não de xadrez.
Tony Ennis
3
AFAIK, a meta-discussão mais explícita sobre o assunto é meta.chess.stackexchange.com/q/100/167 . O consenso naquele momento parecia ser que algo assim deveria ser considerado no tópico. (Nota: Eu não estou discutindo uma forma ou de outra, por isso não levá-lo comigo, mas me sinto livre para contribuir para esse segmento meta..)
ETD

Respostas:

7

Seria isso o que você estava procurando? PGN-extract (um utilitário de linha de comando) http://www.cs.kent.ac.uk/people/staff/djb/pgn-extract/

Posso ver um sinalizador no documento do recurso que pode ajudar:

  • -W[cm|epd|halg|lalg|elalg|san|uci]- especifique que o formato de saída a ser usado
    -Whalgé hifenizado por um longo algébrico.
    -Wlalgé longo algébrico
    -Welalg[PNBRQK]é aprimorado longo algébrico. Use os caracteres PNBRQK para o idioma
shivsky
fonte
2
A melhor opção para a pessoa que perguntou é provavelmente -Wucise deseja alimentá-lo com um mecanismo UCI.
Vegard