Szachy atomowe to (bardzo zabawna) odmiana szachów, w której każde przechwycenie powoduje „eksplozję”, niszczenie uchwyconego kawałka, pionka przechwytującego i wszystkich pionków w promieniu 1 kwadratu. Celem tego wyzwania nie jest rozegranie całej gry w szachy atomowe, ale po prostu symulacja tego, co dzieje się po wykonaniu określonego ruchu.
Uwaga: Efekty dźwiękowe wybuchu nie są uwzględnione.
Wejście
Pozycja planszy zostanie podana w Forsyth-Edwards Notation (powszechnie znana jako FEN), ale tylko z pierwszym polem. Na przykład dane wejściowe:
rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR
reprezentuje pozycję początkową:
Musi to być traktowane jako ciąg znaków lub odpowiednik twojego języka. Jest gwarantowane, że jest ważne; na przykład nie musisz się przejmować, czy jest dziesięciu królów, czy w ogóle nie ma króla.
Otrzymasz również ruch, który chcesz zasymulować, który jest reprezentowany przez dwie nazwy kwadratów: kwadrat, na którym znajduje się element, który ma zostać przeniesiony, i kwadrat, na który się porusza. Na przykład przesunięcie pionka króla o dwa pola do przodu na powyższym obrazku byłoby reprezentowane jako:
e2e4
Należy to również traktować jako ciąg. Ten ruch zawsze będzie ważny i nie musisz wspierać roszady . Musisz wspierać en passant , co zostanie wyjaśnione bardziej szczegółowo w następnej sekcji.
Wynik
Dane wyjściowe twojego programu powinny być w tym samym zapisie częściowym FEN, co dane wejściowe, z wykonanym określonym ruchem (i wszelkie elementy eksplodujące, jeśli to konieczne).
Dokładne zasady dotyczące eksplozji są następujące: podczas przechwytywania elementu:
Usuń przechwycony element (zawsze będzie to element na drugim kwadracie wymienionym na wejściu, z wyjątkiem sytuacji, gdy przechwytywanie jest en passant ).
Usuń element, który wykonuje przechwytywanie (zawsze będzie to element na pierwszym kwadracie wymienionym na wejściu).
Usuń każdy kawałek, który jest:
znajduje się na jednym z 8 kwadratów otaczających miejsce, w którym miał miejsce schwytanie (dla en passant , jest to kwadrat, na którym znajdowałby się pionek, gdyby nie eksplodował).
nie pionek.
Szybki przegląd zasad pasywnych dla tych, którzy nie są ci obcy: jeśli pionek przesunie się o dwa pola do przodu od swojej początkowej rangi, i istnieje pion, który mógłby go przejąć, gdyby przesunął się tylko o jedno pole do przodu, i tak może go przejąć, ale tylko w kolejnym ruchu. Mówi się, że przechwytywanie to odbywa się „ przelotnie ” (lub po francusku: „ en passant ”).
Przypadki testowe
Na zdjęciach zielone strzałki reprezentują ruch, który ma zostać wykonany, a zielone kółka oznaczają kawałki, które zostaną rozbite.
Wejście: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR
, g1f3
Wyjście:rnbqkbnr/pppppppp/8/8/8/5N2/PPPPPPPP/RNBQKB1R
Wejście: 3kBb1r/pp5p/3p4/4pn2/P7/1P2P1pP/2rP1P2/R1B3RK
, f2g3
Wyjście: 3kBb1r/pp5p/3p4/4pn2/P7/1P2P2P/2rP4/R1B3RK
(skradziony z http://en.lichess.org/ocoSfS5I/white#36 )
Wejście: rnbqk1nr/1pp5/p2pp1pp/5p2/1bN5/2P1PQ1N/PP1P1PPP/R1B1KB1R
, f3b7
Wyjście:3qk1nr/2p5/p2pp1pp/5p2/1bN5/2P1P2N/PP1P1PPP/R1B1KB1R
(skradziony z http://en.lichess.org/NCUnA6LV/white#14 )
Wejście: rnbqk2r/pp2p2p/2p3pb/3pP3/5P2/2N5/PPPP2P1/R1BQKB1R
, e5d6
Wyjście:rnbqk2r/pp2p2p/2p3pb/8/5P2/2N5/PPPP2P1/R1BQKB1R
(skradziony z http://en.lichess.org/AvgU4Skq/white#16 ; nie był to rzeczywisty ruch, ale nie może być jedno, aby znaleźć grę atomową że rzeczywiście miał en passant: P)
Wejście: 5r2/2k5/p1B5/1pP1p3/1P4P1/3P4/P7/1K3R1q
, c6h1
Wyjście:5r2/2k5/p7/1pP1p3/1P4P1/3P4/P7/1K3R2
(skradziony z http://en.lichess.org/l77efXEb/white#58 )
Punktacja
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach.