главная новое лучшее написать

hashset


2

Задача 8-го дня Advent of Code — Resonant Collinearity.

🧩 Часть I. Условие задачи

В городе расставлены антенны, каждая из которых настроена на определённую частоту, обозначенную символом (az,AZ,09). Если две антенны одной частоты расположены на прямой, и одна из них находится ровно в два раза дальше от точки, чем другая, то в этой точке возникает антинод.

Нужно найти количество уникальных позиций на карте, в которых возникает антинод. Позиции должны лежать в пределах карты. Антенны с разными частотами не создают антиноду.

💡 Идея

Для каждой частоты рассматриваем все пары антенн, стоящих на одной частоте. Каждая пара порождает ровно два симметричных антинода, расположенных по формуле:

(2*r0 - r1, 2*c0 - c1) и (2*r1 - r0, 2*c1 - c0)

Затем добавляем эти позиции в хеш-сет, если они находятся в пределах границ карты.

🧩 Часть II. Условие задачи

Читать дальше →

ответить