Больше математика или программирование, чем шахматы.

Логические задачи

Модераторы: Азарапетыч, Администрация

Ответить
Петр Иванович Д.
Писатель на заборах
Писатель на заборах
Сообщения: 120
Зарегистрирован: 29 мар 2012, 18:05

Больше математика или программирование, чем шахматы.

Сообщение Петр Иванович Д. »

В город Петрозаводск приехал гроссмейстер Петр Иванович Д. На сеанс одновременной игры среди прочих пришли наши форумчане Юляша, Дендр и Сергей Бирюков. Дендр проиграл N (1 ≤ N ≤ 109) раз, Сергей проиграл M (1 ≤ M ≤ 101000) раз, а Юляша вообще не считала. Друзья заметили, что Петр Д. играет в стиле Остапа Бендера: с доски то и дело исчезают шахматные фигуры или появляются новые (у Петра нет совести и он не остановиться перед мухлежом с любой фигурой). Юляше это надоело, и она решила записывать ходы, сначала записав текущую позицию. Вы должны по записям Юляши определить, жульничал ли Петр.
Правила шахмат Петра Д.сродни обычным, но Петр не знает, что такое взятие на проходе, рокировка и что пешка, доходя до последней горизонтали, превращается в любую фигуру(а не только в ферзя). В остальном фигуры ходят как в обычных шахматах. Ход считается корректным, если была перемещена только одна своя фигура, и при этом нет своего короля под шахом в конце хода. Шахом называется ситуация, когда вражеская фигура атакует поле, на котором стоит король. Мат - это шах, при котором нет корректных ходов. Пат (ничья) - ситуация, когда нет корректных ходов и нет шаха. Начальная позиция может быть лишена здравого смысла. Не нужно проверять ее перед первым ходом.
Исходные данные
Текущая позиция задана 64 числами, разделёнными пробелом или переносом строки: 0 означает пустую клетку, 1 — пешку, 2 — коня, 3 — слона, 4 — ладью, 5 — ферзя, 6 — короля. Отрицательные числа обозначают фигуры чёрных, соответственно, фигуры белых заданы положительными числами. Потом идет 1 ≤ P ≤ 60 — количество ходов в записи Юляши. Далее записано, чей ход: White — белые, Black — чёрные. Потом следуют P ходов в формате клетка-клетка, клетка задана вертикалью и горизонталью. Вертикали нумерованы буквами от a до h слева направо, горизонтали от 1 до 8 снизу-вверх.
Результат
На каждый ход ваша программа должна вывести одно из следующих сообщений (без кавычек): «Incorrect» — ход некорректен, «Mate» — мат, «Check» — шах, «Draw» — пат, "Correct" — не имеет место ни одна из перечисленных выше ситуаций. После некорректного хода, ничьи или мата, выводится пустая строка, а затем текущее положение на доске в формате, аналогичном формату ввода доски, при этом некорректный ход не делается. Ходы, сделанные после некорректного хода, мата или ничьи игнорируются.
Примеры
исходные данные результат

-4 -2 -3 -5 -6 -3 -2 -4
-1 -1 -1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
4 2 3 5 6 3 2 4
2
White
e2-e4
e7-e5



Correct
Incorrect

-4 -2 -3 -5 -6 -3 -2 -4
-1 -1 -1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0
1 1 1 1 0 1 1 1
4 2 3 5 6 3 2 4

-4 -2 -3 -5 -6 -3 -2 -4
-1 -1 -1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
4 2 3 5 6 3 2 4
8
White
e2-e4
e7-e5
d1-f3
h7-h6
f1-c4
g7-g6
f3-f7
e8-f7



Correct
Correct
Correct
Correct
Correct
Correct
Mate

-4 -2 -3 -5 -6 -3 -2 -4
-1 -1 -1 -1 0 5 0 0
0 0 0 0 0 0 -1 -1
0 0 0 0 -1 0 0 0
0 0 3 0 1 0 0 0
0 0 0 0 0 0 0 0
1 1 1 1 0 1 1 1
4 2 3 0 6 0 2 4

0 0 0 0 0 6 0 -6
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 5
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
1
White
h6-a6



Correct

0 0 0 0 0 6 0 -6
0 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

Ответить

Вернуться в «Задачки»