Вызов:
Учитывая шахматную доску, выведите наименьшее количество ходов (если предположить, что черные не двигаются вообще), чтобы собрать красный кусок, если это возможно.
Правила :
Сторона красных всегда будет внизу, однако их фигуры могут начинаться в любом ряду (даже в ряду короля, в который они должны попасть). Черные фигуры являются стационарными , то есть они не перемещаются между движениями красных, но они удаляются с доски при захвате. Обратите внимание, что фигуры могут начинаться в любом месте на доске, в том числе прямо рядом друг с другом. Это не то, как играют в обычные шашки, но ваша программа должна быть способна их решить. (См. Вход 5). Однако элементы проверки должны двигаться только по диагонали (см. Вход 3). Захват в обратном направлении разрешен, если первый захват идет вперед в цепочке (см. Вход 7).
Входные данные:
Шахматная доска 8x8 с пробелами, определенными как следующие символы (не стесняйтесь использовать альтернативы, если они последовательны):
, - Пусто
R - Красная часть (и)
B - Черные фигуры
Выход:
Наименьшее число ходов было бы взять красный кусок , чтобы быть «kinged», введя строку короля на верхнем ряду платы ( со стороны чёрных), 0 , если не требуется никаких шагов (красная часть началась в ряду короля), или отрицательное число, если невозможно собрать короля красного цвета (т. е. черный занимает весь первый ряд).
Вход 1:
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
R . . . . . . .
Выход 1:
7
Вход 2:
. . . . . . . .
. . . . . . . .
. . . . . B . .
. . . . . . . .
. . . B . . . .
. . . . . . . .
. B . . . . . .
R . . . . . . .
Выход 2:
2
Вход 3:
. B . B . B . B
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
R . . . . . . .
Выход 3:
-1
Вход 4:
. . . . . . . R
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
R . . . . . . .
Выход 4:
0
Вход 5:
. . . . . . . .
. . . . . . . .
. . . . . . . .
. B . . B . . .
B . . . . B . .
. B . B . . . .
. . B . . B . .
. . . R R . . .
Выход 5:
4
Вход 6:
. . . . . . . .
. . . . . . . .
. B . . . . . .
. . B . . . . .
. B . B . . . .
. . . . R . . .
. . . B . . . .
. . . . R . . .
Выход 6:
2
Вход 7:
. . . . . . . .
. . . . . . . .
. . B . . . . .
. . . . . . . .
. . B . . . . .
. B . B . B . .
. . . . B . . .
. . . . . R . R
Выход 7:
4
Подсчет очков:
Это код-гольф , поэтому выигрывает самый короткий код в байтах.
Ответы:
JavaScript (ES6),
354322 байтаПринимает массив в качестве ввода с:
Возвращает оптимальное количество ходов или 99, если нет решения.
Это очень быстро, но можно играть в гольф гораздо больше.
источник