Die Herausforderung
Schreiben Sie ein Programm oder eine Funktion, die eine Zeichenfolge als Funktionsparameter oder von stdin empfängt und feststellt, ob es sich um eine gültige FEN- Zeichenfolge handelt.
Eingang
Sie können davon ausgehen, dass die Eingabe immer nur die folgenden Zeichen enthält (Groß- und Kleinschreibung beachten).
pkqrbnPKQRBN12345678/
Die Länge der Eingabe beträgt immer mindestens 1 Zeichen und höchstens 100 Zeichen
Ausgabe
Die Ausgabe sollte ein wahrer / falscher Wert sein. Dies können beliebige Werte sein, solange sie konsistent sind (alle echten Ergebnisse haben die gleiche Ausgabe, alle falschen Ergebnisse haben die gleiche Ausgabe). Sie sollten genau zwei verschiedene mögliche Ausgaben haben.
Was als gültig gilt
Kleinbuchstaben stehen für schwarze Teile, Großbuchstaben für weiße Teile.
Sie sollten sicherstellen, dass in einem Schachspiel die Figuren in der aktuellen Position vorhanden sein können.
Jeder Spieler hat immer genau 1 König (k / K).
Jeder Spieler darf nicht mehr als 8 Bauern (p / P) haben.
Jeder Spieler hat normalerweise nicht mehr als 1 * Dame (q / Q).
Jeder Spieler hat normalerweise nicht mehr als 2 * rooks (r / R)
erhält jeder Spieler hat in der Regel nicht mehr als 2 * Ritter (n / N)
in der Regel Jeder Spieler nicht mehr als 2 * Bischof (B / B) hat
* Es ist für einen Spieler legal ist zu " Werben Sie für eines dieser vier Teile um einen Bauern.
Die Gesamtzahl der Bauern, Königinnen, Türme, Ritter und Bischöfe pro Spieler wird niemals mehr als 15 betragen
Die Gesamtzahl der Teile plus leere Felder (durch Zahlen gekennzeichnet) sollte für jeden Rang immer genau 8 ergeben. Und es sollte immer genau 8 Ränge geben, die durch einen Schrägstrich voneinander getrennt sind.
Dinge, die Sie ignorieren können
Sie müssen sich nicht darum kümmern, ob es möglich ist, in die angegebene Position zu spielen, oder ob die Position legal ist, nur dass die Stücke in den angegebenen Mengen existieren können.
Sie können weitere Komplexitäten von FEN-Saiten wie Spielzug, Rochade-Rechte und En-Passant ignorieren.
Das ist Code Golf. Kürzestes Programm in Bytes gewinnt. Es gelten die üblichen Regelungslücken.
Testfälle
Eingabe rnbqkbnr / pppppppp / 8/8/8/8 / PPPPPPPP / RNBQKBNR
Ausgabe True
Eingang 2br2k1 / 1p2n1q1 / p2p2p1 / P1bP1pNp / 1BP2PnP / 1Q1B2P1 / 8 / 3NR2K
Ausgang Wahr
Eingang r2r2k1 / p3q2p / ppR3pr / rP4bp / 3p4 / 5B1P / P4PP1 / 3Q1RK1
Ausgang Falsch
(Schwarz hat 7 Bauern und 4 Türme - unmöglich)
Input 6k1 / pp3ppp / 4p3 / 2P3b1 / bPP3P1 / 3K4 / P3Q1q1
Output False (nur 7 Ränge)
Eingang 3r1rk1 / 1pp1bpp1 / 6p1 / pP1npqPn / 8 / 4N2P / P2PP3 / 1B2BP2 / R2QK2R
Ausgang False (9 Ränge)
Input 5n1k / 1p3r1qp / p3p3 / 2p1N2Q / 2P1R3 / 2P5 / P2r1PP1 / 4R1K1
Output False (2. Rang hat 9 Felder / Stücke)
Eingabe rnbqkbnr / pppppppp / 8/35/8/8 / PPPPPPPP / RNBQKBNR
Ausgabe True
Vielen Dank an Feersum und Arnauld für die Klärung dieses Falls (3 + 5 = 8)
Was ist FEN?
FEN ist eine Standardnotation zum Aufzeichnen der Position der Figuren auf einem Schachbrett.
Bildnachweis http://www.chessgames.com
* It is legal for a player to 'promote' a pawn to any of these four pieces.Der Spieler darf bis zu 9 Damen haben, solange die Anzahl der Bauern zum Ausgleich verringert wird. Sie müssen sich keine Gedanken darüber machen, ob die Teile legal oder illegal sind, sondern nur über die Anzahl der Teile.
35ist nur eine ungewöhnliche Art, 8 leere Quadrate zu beschreiben.