Gli scacchi atomici sono una variante (molto divertente) di scacchi in cui ogni cattura provoca una "esplosione", distruggendo il pezzo catturato, il pezzo che cattura e tutti i non pedoni in un raggio di 1 quadrato. L'obiettivo di questa sfida non è giocare un'intera partita di scacchi atomici, ma semplicemente simulare ciò che accade quando viene effettuata una determinata mossa.
Dichiarazione di non responsabilità: effetti sonori di esplosione non inclusi.
Ingresso
La posizione del consiglio sarà data nella notazione Forsyth-Edwards (comunemente nota come FEN), ma con solo il primo campo. Ad esempio, un input di:
rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR
rappresenta la posizione iniziale:
Questo deve essere preso come una stringa o l'equivalente della tua lingua. È garantito per essere valido; per esempio, non devi preoccuparti se ci sono dieci re o se non c'è nessun re.
Ti verrà anche data la mossa che devi simulare, che è rappresentata da due nomi quadrati: il quadrato su cui si trova il pezzo da spostare e il quadrato su cui si sta muovendo. Ad esempio, spostare la pedina del re di due spazi in avanti sull'immagine sopra sarebbe rappresentata come:
e2e4
Anche questo deve essere considerato come una stringa. La mossa sarà sempre valida e non è necessario supportare il castling . È necessario supportare en passant , che verrà spiegato in maggior dettaglio nella sezione successiva.
Produzione
L'output del tuo programma dovrebbe essere nella stessa notazione FEN parziale dell'input, con la mossa specificata fatta (ed eventuali pezzi esplosi se necessario).
Le regole esatte per le esplosioni sono — quando un pezzo viene catturato:
Rimuovi il pezzo da catturare (questo sarà sempre il pezzo sul secondo quadrato indicato nell'input, tranne quando la cattura è un en passant ).
Rimuovi il pezzo che sta catturando (questo sarà sempre il pezzo sul primo quadrato indicato nell'input).
Rimuovi ogni pezzo che sia:
situato su uno degli 8 quadrati che circondano quello in cui è avvenuta la cattura (per en passant , questo è il quadrato su cui si troverebbe il pedone di cattura, se non esplodesse).
non una pedina.
Panoramica rapida delle regole en passant , per coloro che non hanno familiarità: se una pedina si sposta di due spazi in avanti dal suo rango iniziale, e c'è una pedina che avrebbe potuto catturarla se si fosse spostata di un solo quadrato in avanti, potrebbe catturarla comunque, ma solo sulla mossa successiva. Si dice che questa cattura sia fatta " di passaggio " (o in francese: " en passant ").
Casi test
Nelle immagini, le frecce verdi rappresentano la mossa che sta per essere eseguita, mentre i cerchi verdi rappresentano i pezzi esplosi.
Ingresso: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR
, g1f3
Uscita:rnbqkbnr/pppppppp/8/8/8/5N2/PPPPPPPP/RNBQKB1R
Ingresso: 3kBb1r/pp5p/3p4/4pn2/P7/1P2P1pP/2rP1P2/R1B3RK
, f2g3
Uscita: 3kBb1r/pp5p/3p4/4pn2/P7/1P2P2P/2rP4/R1B3RK
(rubato da http://en.lichess.org/ocoSfS5I/white#36 )
Ingresso: rnbqk1nr/1pp5/p2pp1pp/5p2/1bN5/2P1PQ1N/PP1P1PPP/R1B1KB1R
, f3b7
Uscita: 3qk1nr/2p5/p2pp1pp/5p2/1bN5/2P1P2N/PP1P1PPP/R1B1KB1R
(rubato da http://en.lichess.org/NCUnA6LV/white#14 )
Ingresso: rnbqk2r/pp2p2p/2p3pb/3pP3/5P2/2N5/PPPP2P1/R1BQKB1R
, e5d6
Uscita: rnbqk2r/pp2p2p/2p3pb/8/5P2/2N5/PPPP2P1/R1BQKB1R
(rubata da http://en.lichess.org/AvgU4Skq/white#16 , questo non era il movimento reale, ma non ho potuto essere disturbati per trovare un gioco atomica che effettivamente avuto en passant: P)
Ingresso: 5r2/2k5/p1B5/1pP1p3/1P4P1/3P4/P7/1K3R1q
, c6h1
Uscita: 5r2/2k5/p7/1pP1p3/1P4P1/3P4/P7/1K3R2
(rubato da http://en.lichess.org/l77efXEb/white#58 )
punteggio
Questo è code-golf , quindi vince il codice più breve in byte.