Шахматные фигуры (короли, королевы, грачи, слоны и рыцари) и пешки находятся на доске, но не на квадрате a1 или h8 . Ваша задача - перейти от пустого a1 к пустым h8 квадратам, проходя только через пустые квадраты. Правила передвижения следующие:
- Вы можете перейти от любого пустого квадрата к любому пустому квадрату рядом с ним (тот же ранг, следующий или предыдущий файл; или тот же файл, следующий или предыдущий ранг).
- Вы можете перейти от любого пустого квадрата к любому пустому квадрату по диагонали рядом с ним (следующий или предыдущий ранг, следующий или предыдущий файл), при условии, что в угловых квадратах содержится либо (а) две пешки, либо (б) пешки / фигуры противоположных цвет. (Две фигуры, не являющиеся пешками, или фигуры, не являющиеся пешками и пешки, одного и того же цвета достаточно сильны, чтобы препятствовать вашему продвижению через угол, но две пешки - нет; и фигуры / пешки противоположного цвета не работают в согласитесь, чтобы преградить вам путь.) Например, если вы на c4 и d5 пусто, вы можете перейти к нему, если c5 и d4 содержат пешки или фигуры / пешки противоположного цвета. См. Ниже раздел «Примеры диагоналей».
вход
Описание платы FEN . То есть: входными данными будут строка, которая включает в себя описание ранга 8 , косую черту ( /
), описание ранга 7 , косую черту, ... и описание ранга 1 . Описание каждого ранга состоит из цифр и букв, идущих из файла a в файл h , где буквы обозначают фигуры и пешки (черные: p
= пешка, n
= рыцарь, b
= слон, r
= ладья, q
= королева, k
= король, а белый одни и те же версии пишутся с заглавной буквы), а числа указывают на последовательное количество пустых квадратов. Например, rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBN
является ли доска после одного хода (пешка короля на е4) в шахматной игре.
a1 и h8 будут пустыми на входе; т.е. первая косая черта имеет цифру перед ним, а последняя косая черта имеет цифру после нее.
Выход
Правда или ложь, указывающие, возможен ли успешный переход на h8 .
Если входные данные не являются допустимым описанием платы FEN (имеется в виду, что соответствует моему объяснению выше), или если a1 или h8 заняты, то выходными данными может быть что угодно или ничего. (Другими словами: вы можете предположить, что входные данные соответствуют требованиям выше.)
счет
Это код гольф: выигрывает меньше байтов.
Пример ввода и вывода
Обратите внимание, что ваш код должен работать для всех допустимых входных данных, а не только для примеров.
Добавьте пробел и w
после каждого FEN для визуализации в http://www.dhtmlgoodies.com/scripts/chess-fen/chess-fen-3.html
. (Обратите внимание, что некоторые другие онлайн-визуализаторы FEN не позволяют использовать доску, которая является незаконной в шахматах, например, с пешкой на 1 или 8 уровне , поэтому ее нельзя использовать для наших целей.)
Правдивые примеры
8/8/8/8/8/8/8/8
- пустая доска1p1Q4/2p1Q3/2p1Q3/2p1Q3/2p1Q3/2p1Q3/Q1p1Q3/1q3q2
- есть путь a1 , b2 , b3 , b4 , b5 , b6 , b7 , c8 , d7 , ( не e8 , он заблокирован, но) d6 , d5 , d4 , d3 , d2 , d1 , e1 , f2 , f3 , f4 , f5 , f6 , f7 , f8 , g8 , h88/8/KKKKK3/K3K3/K1K1p3/Kp1K4/K1KK4/2KK4
- пример, когда квадрат, заблокированный в одной точке, должен быть пропущен позже (чтобы убедиться, что квадраты не являются непроходимыми)K1k1K1K1/1K1k1K1k/K1K1k1K1/1k1K1K1k/K1k1K1k1/1K1k1k1K/K1K1k1K1/1k1k1K1k
- есть единственный проход (просто следуйте за своим носом: на каждом шаге есть только одна клетка, если только не сделать шаг назад); это также пример, когда квадрат заблокирован в одной точке, но необходимо позже
Ложные примеры
6Q1/5N2/4Q3/3N4/2Q5/1N6/2Q5/1N6
- любая попытка на пути должна пройти через две по диагонали части одного цветаN1q1K1P1/1R1b1p1n/r1B1B1Q1/1p1Q1p1b/B1P1R1N1/1B1P1Q1R/k1k1K1q1/1K1R1P1r
- единственный путь через диагональ a8-h1 находится в f2-g3 , но для этого потребуется проход через e1-d2 или f2-e3 , которые оба невозможны.4Q3/4q3/4Q3/5Q2/6Q1/3QqP2/2Q5/1Q6
4q3/4Q3/4q3/5q2/6q1/3qQp2/2q5/1q6
Пример диагоналей
В случае, если вышеприведенная проза была неясной, вот несколько фотографий.
Проходимые диагонали
Непроходимые диагонали