e-olymp 1488. Шахматная головоломка

Задача

prb1488

Борис очень любит различные шахматные головоломки. У него есть младший брат Вова. Борис очень любит задавать простые головоломки Вове, а в награду, если тот их решит, давать ему конфету. Но Вова, к сожалению, не очень любит шахматы, зато любит программирование.

В этот раз Борис задал Вове следующую головоломку: на шахматном поле размером $8 × 8$ клеток стоит одна шахматная фигура — конь. Необходимо расположить на поле еще две шахматные фигуры — ладью и слона, таким образом, чтобы они били коня, но не били друг друга, и конь не бил их. Так как Вова еще не очень силен в программировании, он попросил вас помочь ему с решением данной головоломки.

Напомним, что конь бьет те клетки, которые отстоят от его текущего положения на две клетки по горизонтали и одну клетку по вертикали, или на две клетки по вертикали и одну по горизонтали.

Ладья бьет те клетки, которые находятся на той же горизонтали или вертикали, что и она. Слон бьет те клетки, которые находятся на той же диагонали, что и он.

Входные данные

Первая строка входного файла содержит положение коня в следующем формате. Сначала буква от $a$ до $h$, обозначающая номер столбца в котором находится конь, потом цифра от $1$ до $8$, обозначающая номер строки.

Выходные данные

В первую строку выведите положение ладьи в аналогичном формате, во вторую строку выведите положение слона.

Гарантируется, что требуемая расстановка всегда существует.

Тесты

Ввод Вывод
1 a1 d1
b2
2 h8 e8
g7
3 e5 b5
d4
4 c8 f8
d7
5 h6 e6
g5

Код

Решение

Для решения данной задачи ладью всегда будем размешать на две клетки левее или правее коня, а слона — на одну клетку вниз/вверх по диагонали от него.

Ссылки

Задача 1488 на e-olymp

Код задачи на Ideone

Ю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.