Давайте посмотрим на королев, которые сталкиваются по диагонали:
? [0, 0]
? [1, 1]
? [2, 0]
, и вот две, которые не сталкиваются:
? [0, 0]
?[1, 2]
, поэтому, если вы посмотрите на разницу между позициями сталкивающихся ферзей ([1,1], [-1, 1]) и не коллирующими ([1, 2]), вы можете видеть, что очереди сталкиваются, если разность x и y равна (игнорируя знак). Мы можем поместить это в формулу:
const collide = Math.abs(queen1.x - queen2.x) === queen1.y - queen2.y;
Теперь, если вы замените queen1.x
на i
, queen2.x
на j
, а координаты .y
на a[...]
, вы в основном есть ваш код.