Ctrl K

Сколько разных форм у островов

Средняя
Дана карта chart из нулей и единиц: 1 — суша, 0 — вода. Островом называется группа клеток суши, связанных по сторонам (по горизонтали или вертикали; соседство по диагонали не считается). За пределами карты — вода. Два острова имеют одинаковую форму, если один можно совместить с другим параллельным переносом — без поворотов и отражений. Верните количество различных форм среди всех островов на карте.
Пример 1
chart=[[1, 1, 0, 1, 1], [0, 0, 0, 0, 0], [1, 0, 0, 1, 1], [1, 0, 0, 0, 0]] → 2

Два горизонтальных отрезка из двух клеток — одной формы, вертикальный отрезок слева внизу — другой. Итого две формы.

Пример 2
chart=[[1, 0], [1, 1], [0, 0], [0, 1], [1, 1]] → 2

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

Пример 3
chart=[[0, 0], [0, 0]] → 0
Ограничения
  • 1 ≤ chart.length, chart[i].length ≤ 50
  • Все строки одной длины
  • chart[i][j] — 0 или 1
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиФормы островов с учётом симметрий СложнаяСклеить карточки контактов СредняяЦепочки синонимов СредняяПоле, разрезанное чертами СредняяПерестановки по связям Средняя
загружаем Python…
Вход
chart=[[1, 1, 0, 1, 1], [0, 0, 0, 0, 0], [1, 0, 0, 1, 1], [1, 0, 0, 0, 0]]
Ожидается
2

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 67 тестов на сервере, включая скрытые.