Цель этого задания - определить, является ли ход легальным ходом по английским шашкам .
Эта задача будет использовать доску 8x8. Подвижная фигура должна рассматриваться как человек (не король), который может двигаться только по диагонали. На доске будет 0 или более черных фигур и 1 или более белых фигур. Одна белая фигура будет двигаться в данный момент. Белая фигура может «перепрыгнуть» через одну черную фигуру по диагонали перед ней, если квадрат прямо за ней пуст. Можно сделать еще один прыжок из этой позиции, если перед ним по диагонали есть еще одна черная фигура в любом направлении. Захват обязателен, поэтому запрещается не делать прыжок, который доступен. Однако не обязательно выбирать путь, который максимизирует количество прыжков. По сути, это означает, что если вы совершите прыжок и есть еще один возможный прыжок из конечной позиции, то это движение будет недопустимым. Позиции штук используют следующую схему нумерации:
правила
Входы:
Список чисел, которые представляют черные фигуры.
Список чисел, которые представляют белые фигуры.
Исходная позиция для белого куска
Конечная позиция для белого куска
Вывод:
- Истинное значение, если ход действителен, в противном случае - ложное значение
Можно предположить, что белая фигура всегда будет занимать исходную позицию.
Если это удобно, вы можете предположить, что первая белая фигура в списке белых фигур будет содержать начальную позицию вместо принятия ввода 3.
Стандартные правила игры в гольф. Побеждает несколько байтов.
Тестовые случаи
Для иллюстрации: О - начальная позиция, Х - конечная позиция, В - черные фигуры, а W - белые фигуры.
Black pieces: []
White pieces: [5]
Move: (5, 1)
Output: True
Single move no jump
X _ _ _
O _ _ _
B: [6]
W: [9]
M: (9, 2)
O: True
Single jump
_ X _ _
_ B _ _
O _ _ _
B: [2, 6]
M: (9, 2)
O: False
Illegal ending position on top of black piece
_ X _ _
_ B _ _
O _ _ _
B: [7, 14]
W: [17]
M: (17, 3)
O: True
Double jump
_ _ X _
_ _ B _
_ _ _ _
_ B _ _
O _ _ _
B: [7, 14]
M: (17, 10)
O: False
Illegal jump, must take the next jump as well
_ _ _ _
_ _ B _
_ X _ _
_ B _ _
O _ _ _
B: [4]
W: [8]
M: (8, 3)
O: False
Illegal jump across the board
_ _ _ X
B _ _ _
O _ _ _
B: [6, 7]
W: [6]
M: (10, 1)
O: True
Split decision p1
X _ _ _
_ B B _
_ O _ _
B: [6, 7]
M: (10, 3)
O: True
Split decision p2
_ _ X _
_ B B _
_ O _ _
B: [2]
W: [1]
M: (1, 3)
O: False
Sideways Jump
O B X _
B: [6]
W: [1]
M: (1, 10)
O: False
Backwards Jump
O _ _ _
_ B _ _
_ X _ _
B: [6]
W: [9, 2]
M: (9, 2)
O: False
Illegal ending position on top of white piece
_ X _ _
_ B _ _
O _ _ _
B: []
W: [9, 6]
M: (9, 2)
O: False
Illegal jump over white piece
_ X _ _
_ W _ _
O _ _ _
B: [8, 15, 23, 24]
W: [27]
M: (27, 4)
O: True
Split decision long path
_ _ _ X
_ _ _ B
_ _ _ _
_ _ B _
_ _ _ _
_ _ B B
_ _ W _
B: [8, 15, 23, 24]
W: [27]
M: (27, 20)
O: True
Split decision short path
_ _ _ _
_ _ _ B
_ _ _ _
_ _ B _
_ _ _ X
_ _ B B
_ _ W _
B=[8,15,23,24];W=[27]
с каждым изM=[27,4]
иM=[27,20]
1. Это даст изменение направления. 2 он ответит на мой вопрос: оба они действительны или должны быть приняты дольше? («Захват обязателен, поэтому незаконно не делать прыжок, который доступен», как бы предполагает, что оба действительны, хотя я не знаю, почему вы делаете незаконным не захватывать, если это возможно, так что, возможно, вы хотите взять как сколько штук возможно?)