Da morgen der 4. Mai ist, gibt es hier einen kleinen Star Wars-Themenbeitrag, der Sie mental auf all die schlechten Witze vorbereitet, die morgen kommen.
HINTERGRUNDGESCHICHTE
Während einer Sitzung des galaktischen Senats sitzen alle Senatoren in einem n*n
Raster. Ein plötzlicher Ausbruch der JarJar-Grippe (der ewig anhält und die Infizierten wie JarJar Binks ansprechen lässt) führt dazu, dass sich einige Senatoren anstecken.
Hier ist ein Beispiel mit einem 6*6
Raster, in dem X
sich die infizierten Senatoren befinden. Die entsprechende Liste lautet [[0,5],[1,4],[2,3],[2,1],[3,3],[3,0],[4,5],[0,5]]
:
Danach beginnt sich die Infektion schrittweise auszubreiten. Zwei Senatoren grenzen aneinander, wenn sie eine ganze Kante im Raster haben (dh oben, unten, rechts, links), was bedeutet, dass wir Diagonalen ausschließen.
Wir können daraus schließen, dass ein Senator an 2,3 oder 4 andere Senatoren angrenzt und die folgenden Regeln für die Infektion beansprucht:
- Ein infizierter Senator bleibt für immer infiziert
- Ein Senator wird in einem Schritt infiziert, wenn er im vorherigen Schritt neben zwei oder mehr infizierten Senatoren war
Hier ist ein Beispiel mit dem vorherigen Raster, das die 2 ersten Schritte der Infektion zeigt:
Nach den nächsten Schritten wird der gesamte Senat infiziert
DEINE AUFGABE
Ihr Code muss keine ungültigen Eingaben wie eine Liste größer als n*n
oder Koordinaten verarbeiten, die keine Unterscheidungsmerkmale sind.
Ihr Code verwendet als Eingabe eine Liste von Paaren von Ganzzahlen (oder ein Binärgitter oder ein anderes Format, das zu Ihrer Sprache passt) und eine Ganzzahl n
(was unnötig sein kann, wenn Sie ein anderes Format als eine Liste verwenden), zum Beispiel:
8 [[1,2],[1,1],[7,4],[2,7],[4,3]]
n ist die Seite des Gitters, was bedeutet, dass das Gitter ein * n-Gitter ist, und die Liste der Ganzzahlpaare sind die Koordinaten der Zellen der ursprünglich infizierten Senatoren.
Die untere linke Ecke des Gitters ist [0,0] und die obere rechte Ecke ist [n-1, n-1]. Oben links ist [0, n-1].
Ihr Code muss eine Ganzzahl ausgeben:
-1
oder ein falscher Wert oder ein Fehler, wenn das gesamte Raster niemals vollständig infiziert wird, oder die Mindestanzahl von Schritten, die erforderlich sind, um das gesamte Raster zu infizieren
Testfälle
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
Denken Sie daran, dass dies Code-Golf ist und somit die kürzeste Antwort in Bytes gewinnt!
n
? Gibt es einen Maximalwert?
CellularAutomaton
...