La sfida
Scrivi un programma o una funzione che accetta un input di stringa come parametro di funzione o da stdin e determina se si tratta di una stringa FEN valida .
Ingresso
Si può presumere che l'input includerà sempre e solo i seguenti caratteri (case sensitive)
pkqrbnPKQRBN12345678/
La lunghezza dell'input sarà sempre di almeno 1 carattere e un massimo di 100 caratteri
Produzione
L'output dovrebbe essere un valore di verità / falsità. Questi possono essere i valori desiderati purché siano coerenti (tutti i risultati di verità hanno lo stesso output, tutti i risultati di falsi hanno lo stesso output). Dovresti avere esattamente due distinti possibili output.
Ciò che conta come valido
Le lettere minuscole rappresentano pezzi neri, le lettere maiuscole rappresentano pezzi bianchi.
Dovresti assicurarti che in una partita a scacchi sia possibile che esistano i pezzi nella posizione attuale.
Ogni giocatore avrà sempre esattamente 1 re (k / K)
Ogni giocatore non può avere più di 8 pedine (p / P)
Ogni giocatore di solito non avrà più di 1 * regina (q / Q)
Ogni giocatore di solito non avrà più di 2 * cornacchie (R / R)
Ogni giocatore avrà solitamente non più di 2 * cavalieri (n / n)
Ogni giocatore avrà solitamente non più di 2 * vescovi (B / B)
* E 'legale per un giocatore' promuovere 'una pedina per uno di questi quattro pezzi.
Il totale di pedine, regine, corvi, cavalieri e vescovi per ogni giocatore non sarà mai superiore a 15
Il numero totale di pezzi più i quadrati vuoti (indicati da numeri) dovrebbe sempre aggiungere esattamente 8 per ogni rango. E ci dovrebbero sempre essere esattamente 8 ranghi, separati da una barra.
Cose che puoi ignorare
Non devi preoccuparti se è possibile giocare nella posizione indicata o se la posizione è legale, solo che i pezzi possono esistere nelle quantità indicate.
Puoi ignorare ulteriori complessità delle stringhe FEN come il turno del giocatore, i diritti di castling e il passante.
Questo è il codice golf. Vince il programma più breve in byte. Si applicano solite scappatoie e regole.
Casi test
Input rnbqkbnr / pppppppp / 8/8/8/8 / PPPPPPPP / RNBQKBNR
Output True
Ingresso 2br2k1 / 1p2n1q1 / p2p2p1 / P1bP1pNp / 1BP2PnP / 1Q1B2P1 / 8 / 3NR2K
Uscita True
Ingresso r2r2k1 / p3q2p / ppR3pr / rP4bp / 3p4 / 5B1P / P4PP1 / 3Q1RK1
Uscita falso
(il nero ha 7 pedine e 4 torri - impossibile)
Ingresso 6k1 / pp3ppp / 4p3 / 2P3b1 / bPP3P1 / 3K4 / P3Q1q1
Uscita falso (solo 7 gradi)
Ingresso 3r1rk1 / 1pp1bpp1 / 6p1 / pP1npqPn / 8 / 4N2P / P2PP3 / 1B2BP2 / R2QK2R
Uscita falso (9 gradi)
Ingresso 5n1k / 1p3r1qp / p3p3 / 2p1N2Q / 2P1R3 / 2P5 / P2r1PP1 / 4R1K1
Uscita falso (il 2 ° grado ha 9 quadrati / pezzi)
Input rnbqkbnr / pppppppp / 8/35/8/8 / PPPPPPPPP / RNBQKBNR
Output True
Grazie a Feersum e Arnauld per aver chiarito questo caso (3 + 5 = 8)
Cos'è la FEN?
FEN è una notazione standard per la registrazione della posizione dei pezzi su una scacchiera.
Credito di immagine http://www.chessgames.com
* It is legal for a player to 'promote' a pawn to any of these four pieces.Il giocatore può avere fino a 9 regine a condizione che il numero di pedine sia ridotto per compensare. Non devi preoccuparti che la posizione dei pezzi sia legale o illegale, ma solo il numero di pezzi.
35è solo un modo insolito per descrivere 8 quadrati vuoti.