Как определить, есть ли такая клетка на доске, которую бьют оба коня?

На шахматной доске стоят два коня. Определите, есть ли такая клетка, которую бьют оба коня.

Есть идеи, что нужно как-то реализовать двумерными массивами, но как сделать не имею понятия.


Ответы (2 шт):

Автор решения: Xander

Если для коня известны координаты x и y, то существует до восьми клеток, на которые он может сходить:

  • четыре клетки с координатами "x плюс-минус два" и "y плюс-минус один"
  • четыре клетки с координатами "x плюс-минус один" и "y плюс-минус два"

Нужно отфильтровать те из координат, которые выходят за пределы доски (то есть у которых хотя бы одна из координат меньше нуля или больше семи).

Оставшиеся координаты сложить в set. Для второго коня сделать всё то же самое.

После этого остаётся только найти пересечение двух сетов, и если пересечение не пустое - вот вам клетка, которую бьют оба коня.

PS: чтобы координаты можно было сложить в сет, координата должна быть представлена таплом - например, (3, 5)

→ Ссылка
Автор решения: MBo

Массив не нужен. Посчитайте абсолютные значения разностей координат по вертикали и по горизонтали, и отсортируйте полученную пару

Кони бьют одно поле, если результаты входят в набор

(0,2), (0,4), (1,1), (1,3), (2,4), (3,3)

Пример: координаты коней (4,4) и (1,5). Разности -3 и 1. Абсолютные значения 3 и 1. Первое больше= поменяем,получаем 1 и 3. Такая пара подходит.

→ Ссылка