Ю2.25

87305Задача. На шахматной доске стоят черный король и белые ладья и слон (ладья бьет по горизонтали и вертикали, слон — по диагоналям). Проверить, есть ли угроза королю и если есть, то от кого именно. Учесть возможность защиты (например, ладья не бьет через слона).

[latex]x _{1}, y_{1}[/latex]- координаты слона.

[latex]x _{2}, y_{2}[/latex]- координаты ладьи.

[latex]x _{3}, y_{3}[/latex]- координаты короля.

Таблица:

[latex]x _{1} [/latex] [latex]y _{1} [/latex] [latex]x _{2} [/latex] [latex]y _{2} [/latex] [latex]x _{3} [/latex] [latex]y _{3} [/latex]  Предполагаемый результат  Комментарий
 1  1  2  2  4  4  Ладья перекрывает шаг от слона.  Тест пройден
 4  5  2  5  5  5  Слон перекрывает шаг от ладьи.  Тест пройден
 1  1  4  5  5  5  Короля атакует и слон и ладья.  Тест пройден
 5  1  4  5  5  5  Ладья атакует короля.  Тест пройден
 5  1  5  3  5  5  Ладья атакует короля.  Тест пройден
 3  1  4  2  5  3   Ладья перекрывает шаг от слона.  Тест пройден
 4  2  3  1  5  3  Слон объявляет шаг королю.  Тест пройден
 1  4  5  3  2  2  Короля не атакует никакая фигура.  Тест пройден

Исходный код программы:

Описание:

По условию задачи необходимо узнать атакуют ли фигуры короля. Для этого я использовал полный перебор всех возможных вариантов взаимодействия данных фигур.

Алгоритм:

  1.  Объявляем переменные и вводим их значения.
  2. Проверка условий.
    1. Проверка правильности ввода (не совпадают  координаты фигур).
    2. Проверка условия №1.  Проверяем, может ли короля хоть кто-то атаковать. Т. е. стоят ли ладья и король на одной горизонтальной или вертикальной линии или стоит ли король на одной диагонали со слоном.
    3. Проверка условия №2. Проверяем отдельно ладью. Если какая-то координата у ладьи и короля совпадает, то проверяем, находится ли слон между ними. Вывод результата.
    4. Проверка условия №1. Проверка слона, если король и слон расположены на одной диагонали, то проверяем, находится ли ладья между ними. Вывод результата.
  3. Окончание работы.

Ссылка на Ideone.

Related Images: