Jak obsługiwane są niejednoznaczności PGN?

14

Jak radzi się z dwuznacznościami podczas pisania PGN, gdy więcej niż jeden kawałek tego samego typu może przejść do tego samego kwadratu?

NN - NN

Uwaga: poruszanie się jest białe, z en passant przechwytującym kwadratem na g6.

Co by się stało, gdyby :

  1. górna wieża przenosi się do b7?
  2. jedna z dolnych wież przenosi się do b7?
  3. lewy pionek bierze xg5?
  4. prawy dolny pionek bierze xg5?
  5. prawy górny pionek przejmuje xg6en passant_?
  6. lewy górny rycerz idzie do c3?
  7. jeden z dolnych rycerzy idzie do c3?

Edycja (pytanie bonusowe):

  • Co by się stało, gdyby jakaś królowa chciała się tam wybrać g7?
ajax333221
źródło
2
Czarne prawdopodobnie powinny zrezygnować! :)
AndyM
1
BTW, pozycja nie może być prawnie biała do przesunięcia, ponieważ czarny jest w szachach.
ETD,

Odpowiedzi:

10

Ze specyfikacji :

Podstawowy ruch SAN [Standardowa notacja algebraiczna] podaje się, wymieniając literę ruchomego elementu (pominiętą dla pionków), a następnie kwadrat docelowy. Ruchy przechwytywania są oznaczone małą literą „x” bezpośrednio przed kwadratem docelowym; pionek przechwytuje literę pliku kwadratu początkowego pionka przechwytującego bezpośrednio przed znakiem „x”.

I

W przypadku niejasności (wiele kawałków tego samego typu przemieszczających się do tego samego kwadratu), podejmowany jest pierwszy odpowiedni jednoznaczny krok z trzech następujących kroków:

Po pierwsze, jeśli ruchome elementy można rozróżnić na podstawie ich plików źródłowych, litera pliku źródłowego elementu ruchomego jest wstawiana bezpośrednio za literą elementu ruchomego.

Po drugie (gdy pierwszy krok nie powiedzie się), jeśli ruchome elementy można odróżnić według ich rang pochodzących, początkowa cyfra rangi ruchomego elementu jest wstawiana natychmiast po literze ruchomego elementu.

Po trzecie (gdy zawiodą zarówno pierwszy, jak i drugi stopień), dwuznakowa współrzędna kwadratowa początkowego kwadratu elementu ruchomego jest wstawiana bezpośrednio za literą elementu ruchomego.

1: Rbb7

2: Rab7lubRcb7

3: fxg5

4: hxg5

5: hxg6

6: Nac3

7: Nbc3lubNdc3

Zauważ, że tak po prostu napisano specyfikację. Przechwytywanie en pasywne nie powinno być przypadkiem na krawędzi, ale jest mało prawdopodobne, aby były one poprawnie wdrażane w 100% przypadków. Musisz przetestować odtwarzacz, aby sprawdzić, czy poprawnie obsługuje te przypadki.

Jonathan Garber
źródło
jest 5w ...xg5niezbędne? pionki przechwytują tylko w jeden sposób, nie powinno być problemu z ...xg 5
samą
To jest. Dodałem odpowiednią sekcję. Nie ma żadnych wyjątków od reguły w specyfikacji, i tak lepiej mieć „trudne” miejsce docelowe. Ponownie pamiętaj, że nie wszystkie odtwarzacze poprawnie to zaimplementują.
Jonathan Garber
to prawda, dziwne jest to, że specyfikacja mówi tylko, że „pionek przechwytuje literę pliku kwadratu początkowego pionka przechwytującego bezpośrednio przed znakiem„ x ””. , nigdy nie mówi nic o randze
ajax333221,
Hmm, masz rację. Myślę, że możemy bezpiecznie założyć, że to właściwy sposób na ujednoznacznienie, ale nie ma tego w specyfikacji. To prawda, że ​​dwuznaczny en passant przechwytuje JEST przypadek skrajny sam w sobie. Ale niezależnie od tego, specyfikacja miejsca docelowego jest wymagana przez specyfikację we wszystkich przypadkach.
Jonathan Garber
1
Jeszcze jedna losowa nuta, w nr 5 poprawnym pgn będzie 1. hxg6. Możesz także dodać, e.p.aby utworzyć, 1. hxg6 e.p.jeśli chcesz określić, że przechwytywanie jest en passant. Ale wszystkie przechwytywania pionków są plikami źródłowymi, „x”, kwadratem docelowym.
Andrew
4

Musimy skorzystać z pierwszego kroku, który usuwa niejednoznaczność:

  1. Użyj litery pliku źródłowego (jeśli niejednoznaczność nie została usunięta, patrz # 2).
  2. Użyj początkowego numeru rangi (jeśli dwuznaczność nie została usunięta, patrz # 3).
  3. Użyj zarówno pliku, jak i rangi z kwadratu źródłowego.

1) Rbb7(ponieważ # 1 )
2) Rab7lub Rcb7(oba ponieważ # 1 )
3) fxg5(nie wymaga ujednoznacznienia)
4) hxg5(nie wymaga ujednoznacznienia)
5) hxg6(nie wymaga ujednoznacznienia)
6) Nac3(ponieważ # 1 )
7) Nbc3lub Ndc3(oba ponieważ # 1 )

Teraz przykład premii:

wprowadź opis zdjęcia tutaj

w przypadku królowej g8 na g7 : Qgg7(ponieważ # 1 )
w przypadku królowej h7 na g7 : Q7g7(ponieważ # 2 )
w przypadku królowej h8 na g7 : Qh8g7(ponieważ # 3 )

rev. Ajax333221
źródło
3
NN - NN

Co by się stało gdyby:

1. górna wieża przenosi się na b7?

Rbb7

2. jedna z dolnych wieżyczek przesuwa się na b7?

Rab7 lub Rcb7

3. lewy pionek bierze xg5?

fxg5

4. prawy dolny pionek zajmuje xg5?

hxg5

5. prawy górny pionek bierze xg6 en passant?

hxg6!

6. lewy górny rycerz idzie do C3?

Nac3

7. jeden z dolnych rycerzy idzie do C3?

Nbc3 lub Ndc3

bonus Co by się stało, gdyby jakaś królowa chciała przejść do g7?

Kiedy wszystko inne zawiedzie, bądź wyraźny. Qh8g7lubh8g7

Travis J
źródło