Wie konvertiere ich PGN-Bewegungen in eine lange algebraische Notation (in Python)?

12

Ich möchte eine PGN-Datei lesen und dann zu einer bestimmten Verschiebungsnummer vorrücken und diese einer UCI-Engine zuführen. Es stellt sich heraus, dass Engines mit langer algebraischer Notation arbeiten und PGNs in kurzer algebraischer Notation. Was ist ein einfacher Weg, um die Konvertierung durchzuführen? dh von SAN nach LAN.

Mir ist klar, dass das Generieren einer langen algebraischen Notation Kenntnisse über den Board-Status und die Schachregeln erfordert, also möchte ich nicht alles noch einmal schreiben! Sicherlich muss so etwas bereits existieren - entweder ein Befehlszeilenprogramm oder ein Modul (vorzugsweise in Python).

schnelle Vervielfachung
quelle
2
Diese Frage scheint nicht zum Thema zu gehören, da es um Programmierung geht, nicht um Schach.
Tony Ennis
3
AFAIK, die expliziteste Metadiskussion, die es gibt, die relevant dafür ist, ob dies ein Thema ist, ist meta.chess.stackexchange.com/q/100/167 . Der Konsens zu diesem Zeitpunkt schien zu sein, dass so etwas thematisch betrachtet werden sollte. (Hinweis: Ich streite nicht auf die eine oder andere Weise, also nimm es nicht mit. Aber zögern Sie nicht, zu diesem Meta-Thread beizutragen.)
ETD

Antworten:

7

Wäre das das, wonach Sie suchen? PGN-Extrakt (Ein Befehlszeilenprogramm) http://www.cs.kent.ac.uk/people/staff/djb/pgn-extract/

Ich kann im Feature-Dokument eine Flagge sehen , die helfen könnte:

  • -W[cm|epd|halg|lalg|elalg|san|uci]- Geben Sie an, dass das zu verwendende Ausgabeformat
    -Whalglange algebraisch getrennt werden soll.
    -Wlalgist lang algebraisch
    -Welalg[PNBRQK]ist erweitert lang algebraisch. Verwenden Sie die Zeichen PNBRQK für die Sprache
Shivsky
quelle
2
Die beste Option für die Person, die gefragt hat, ist wahrscheinlich, -Wuciob sie es einer UCI-Engine zuführen möchte.
Vegard