Оскільки завтра - 4 травня, ось невеличкий тематичний пост "Зоряних воєн", щоб подумки підготувати вас до всіх поганих жартів, що приходять завтра.
НАЗАД
Під час сесії галактичного сенату всі сенатори сидять в n*n
сітці. Раптовий спалах грипу JarJar (який триває вічно і змушує інфікованих говорити як JarJar Binks) викликає зараження деяких сенаторів.
Ось приклад із 6*6
сіткою, де X
є заражені сенатори, відповідний список [[0,5],[1,4],[2,3],[2,1],[3,3],[3,0],[4,5],[0,5]]
:
Після цього інфекція починає поширюватися поетапно. Два сенатори є сусідніми, якщо вони ділять цілий край на сітці (тобто верхній, нижній, правий, лівий), це означає, що ми виключаємо діагоналі.
Ми можемо зробити висновок, що сенатор може примикати до 2,3 або 4 інших сенаторів і вимагати наступних правил щодо зараження:
- Заражений сенатор залишається зараженим назавжди
- Сенатор заражається на етапі, якщо він був сусідній з 2 або більше зараженим сенатором на попередньому етапі
Ось приклад з попередньою сіткою, яка показує 2 перші кроки зараження:
Після наступних кроків весь сенат буде заражений
ВАШ ЗАВДАННЯ
У вашому коді не потрібно обробляти недійсні дані, такі як список, більший за n*n
або координати, які не відрізняються.
Ваш код прийме як вхід список пар цілих чисел (або двійкової сітки або будь-якого іншого формату, який відповідає вашій мові) та цілого числа n
(що може бути непотрібним, якщо ви використовуєте інший формат, ніж список), наприклад:
8 [[1,2],[1,1],[7,4],[2,7],[4,3]]
n - сторона сітки, що означає, що сітка буде * n сіткою, а список пар цілих чисел є координатами комірок первинно заражених сенаторів.
У нижній лівій частині сітки - [0,0], а в правій верхній частині - [n-1, n-1]. Зліва вгорі - [0, n-1].
Ваш код повинен вивести ціле число:
-1
або хибне значення або помилка, якщо вся сітка ніколи не буде повністю заражена або мінімальна кількість кроків, необхідних для зараження всієї сітки
Тестові справи
6 [[0,5],[1,4],[2,3],[2,1],[3,3],[3,0],[4,5],[5,0]] => 7
4 [[1,1][0,3][1,0][3,0][3,3]] => 9
Пам'ятайте, що це код-гольф , таким чином найкоротша відповідь у байтах виграє!
n
? Чи існує максимальне значення?
CellularAutomaton
...