Ponieważ jutro jest 4 maja, oto krótki post z motywem Gwiezdnych Wojen, aby przygotować się mentalnie na wszystkie złe żarty, które nadejdą jutro.
BACKSTORY
Podczas sesji galaktycznego senatu wszyscy senatorzy siedzą w n*n
siatce. Nagły wybuch grypy JarJar (trwający wiecznie i powodujący, że zarażeni mówią tak, jak JarJar Binks) powoduje zarażenie niektórych senatorów.
Oto przykład z 6*6
siatką, w której X
są zainfekowani senatorzy, odpowiednia lista to [[0,5],[1,4],[2,3],[2,1],[3,3],[3,0],[4,5],[0,5]]
:
Następnie infekcja zaczyna się rozprzestrzeniać krok po kroku. Dwóch senatorów sąsiaduje, jeśli dzielą całą krawędź siatki (tj. Góra, dół, prawo, lewa strona), co oznacza, że wykluczamy przekątne.
Możemy stwierdzić, że senator może sąsiadować z 2,3 lub 4 innymi senatorami i zgłosić następujące zasady dotyczące infekcji:
- Zarażony senator pozostaje zarażony na zawsze
- Senator jest zarażany na jednym etapie, jeśli sąsiadował z 2 lub więcej zarażonymi senatorami na poprzednim etapie
Oto przykład z poprzednią siatką, która pokazuje 2 pierwsze kroki infekcji:
Po kolejnych krokach cały senat zostanie zainfekowany
TWOJE ZADANIE
Twój kod nie musi obsługiwać nieprawidłowych danych wejściowych, takich jak lista większa niż n*n
lub współrzędne, które nie są różnicami.
Twój kod pobierze jako dane wejściowe listę par liczb całkowitych (lub siatkę binarną lub dowolny inny format, który pasuje do twojego języka) i liczbę całkowitą n
(co może być niepotrzebne, jeśli używasz innego formatu niż lista), na przykład:
8 [[1,2],[1,1],[7,4],[2,7],[4,3]]
n jest stroną siatki, co oznacza, że siatka będzie siatką * n, a lista par liczb całkowitych jest współrzędnymi komórek początkowo zainfekowanych senatorów.
Lewy dolny róg siatki to [0,0], a prawy górny - [n-1, n-1]. Lewy górny róg to [0, n-1].
Twój kod musi wypisywać liczbę całkowitą:
-1
lub wartość fałszowania lub błąd, jeśli cała sieć nigdy nie zostanie całkowicie zainfekowana lub minimalna liczba kroków wymaganych do zainfekowania całej sieci
Przypadki testowe
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
Pamiętaj, że jest to golf golfowy , dlatego wygrywa najkrótsza odpowiedź w bajtach!
n
? Czy istnieje wartość maksymalna?
CellularAutomaton
...