Jak przekonwertować ruchy PGN na długą notację algebraiczną (w pythonie)?

12

Chcę odczytać plik PGN, a następnie przejść do określonego numeru przeniesienia i podać go do silnika UCI. Okazuje się, że silniki działają przy użyciu długiej notacji algebraicznej, a PGN są w skrócie algebraiczne. Jaki jest łatwy sposób na konwersję? tj. z SAN na LAN.

Zdaję sobie sprawę, że generowanie długiej notacji algebraicznej wymaga znajomości stanu planszy i zasad szachowych, więc nie chcę pisać tego wszystkiego od nowa! Z pewnością coś takiego musi już istnieć - albo program wiersza poleceń, albo moduł (najlepiej w Pythonie).

szybkie mnożenie
źródło
2
To pytanie wydaje się nie na temat, ponieważ dotyczy programowania, a nie szachów.
Tony Ennis,
3
AFAIK, najbardziej jawna meta dyskusja, która dotyczy tego tematu, to meta.chess.stackexchange.com/q/100/167 . Konsensus w tym momencie wydawał się być taki, że coś takiego należy rozważyć na temat. (Uwaga: nie spieram się w ten czy inny sposób, więc nie podejmuj tego ze mną. Ale nie krępuj się przyczynić do tego meta wątku.)
ETD

Odpowiedzi:

7

Czy tego właśnie szukasz? PGN-extract (narzędzie wiersza poleceń) http://www.cs.kent.ac.uk/people/staff/djb/pgn-extract/

Widzę flagę w doc funkcji , które mogą pomóc:

  • -W[cm|epd|halg|lalg|elalg|san|uci]- Określić format wyjściowy, który
    -Whalgma być dzielony, długi algebraiczny.
    -Wlalgjest długi algebraiczny
    -Welalg[PNBRQK]jest wzmocniony długi algebraiczny. Użyj języka PNBRQK jako języka
Shivsky
źródło
2
Najlepszą opcją dla osoby, która zapytała, jest prawdopodobnie to, -Wuciczy chcą ją podać do silnika UCI.
Vegard,