Змагання
Напишіть програму або функцію, яка приймає рядок введення як функціональний параметр або з stdin і визначає, чи це дійсний рядок FEN .
Вхідні дані
Ви можете припустити, що вхід буде включати лише колись такі символи (залежно від регістру)
pkqrbnPKQRBN12345678/
. Довжина вводу завжди буде мінімум 1 символом і максимум 100 символів
Вихідні дані
Вихід повинен мати значення truthy / falsey. Це можуть бути будь-які значення, які ви бажаєте, якщо вони є послідовними (усі тритинні результати мають однаковий результат, усі результати фальси мають однаковий результат). У вас повинно бути рівно два різних можливих виходу.
Що вважається дійсним
Малі літери представляють собою чорні шматки, а великі літери - білі шматки.
Ви повинні переконатися, що в шаховій грі можливо, щоб фігури в поточній позиції існували.
У кожного гравця завжди буде рівно 1 король (к / к).
У кожного гравця може бути не більше 8 пішаків (p / P).
У кожного гравця зазвичай не більше 1 * королеви (q / Q).
У кожного гравця зазвичай не буде більше більше 2 * граків (r / r)
У кожного гравця зазвичай не більше 2 * лицарів (н / н).
У кожного гравця зазвичай не більше 2 * єпископів (б / б)
* Гравець законно ' просування 'пішака до будь-якого з цих чотирьох творів.
Загальна кількість пішаків, королеви, граків, лицарів та єпископів для кожного гравця ніколи не буде більше 15
Загальна кількість штук плюс порожні квадрати (позначені цифрами) завжди повинні складати до 8 рівно для кожного рангу. І завжди повинно бути рівно 8 рангів, розділених прямою косою рисою.
Речі, які можна ігнорувати
Вам не потрібно перейматися тим, чи можна грати на позначеній позиції або чи позиція легальна, лише те, що шматки можуть існувати у вказаній кількості.
Ви можете ігнорувати подальші складності рядків FEN, таких як поворот гравця, права на бросити та прохідний.
Це код гольфу. Виграє найкоротша програма в байтах. Звичайні лазівки та правила застосовуються.
Випробування
Вхід rnbqkbnr / pppppppp / 8/8/8/8 / PPPPPPPP / RNBQKBNR
Вихід True
Вхід 2br2k1 / 1p2n1q1 / p2p2p1 / P1bP1pNp / 1BP2PnP / 1Q1B2P1 / 8 / 3NR2K
Вихід True
Вхід r2r2k1 / p3q2p / ppR3pr / rP4bp / 3p4 / 5B1P / P4PP1 / 3Q1RK1
Вихід помилковий
(чорний колір має 7 пішаків та 4 граки - неможливо)
Вхід 6k1 / pp3ppp / 4p3 / 2P3b1 / bPP3P1 / 3K4 / P3Q1q1
Вихід помилковий (лише 7 рангів)
Вхід 3r1rk1 / 1pp1bpp1 / 6p1 / pP1npqPn / 8 / 4N2P / P2PP3 / 1B2BP2 / R2QK2R
Вихід помилковий (9 рангів)
Вхід 5n1k / 1p3r1qp / p3p3 / 2p1N2Q / 2P1R3 / 2P5 / P2r1PP1 / 4R1K1
Вихід помилковий (2-й ранг має 9 квадратів / штук)
Введіть rnbqkbnr / pppppppp / 8/35/8/8 / PPPPPPPP / RNBQKBNR
Вихід Істинно
Завдяки Feersum та Arnauld за роз'яснення цього випадку (3 + 5 = 8)
Що таке FEN?
FEN - це стандартне позначення для запису положення фігур на шаховій дошці.
Кредитний імідж http://www.chessgames.com
* It is legal for a player to 'promote' a pawn to any of these four pieces.У гравця може бути до 9 королев, поки кількість пішаків зменшиться для компенсації. Вам не потрібно турбуватися про те, щоб положення творів було законним чи незаконним, лише кількість творів.
35це просто незвичайний спосіб описати 8 порожніх квадратів.