In einem Empfänger von 5x5 befindet sich ein Virus. Da wir wissen, wie es seine Kontamination verbreitet, besteht Ihre Mission darin, die letzte Stufe der Kontamination auszugeben.
Der Empfänger
Es wird als zweidimensionales Array von 5x5 dargestellt:
0 0 0 0 1
0 0 0 0 1
0 0 0 1 1
0 0 1 1 1
0 1 1 1 1
Wo 1
bedeutet eine Position, an der das Virus bereits kontaminiert ist, und 0
eine Position, die nicht kontaminiert ist.
Wie sich das Virus ausbreitet
- Eine kontaminierte Position kann nicht sauber sein.
- Eine saubere Position wird in der nächsten Stufe nur dann kontaminiert, wenn mindestens zwei ihrer benachbarten Positionen (Nord-, Ost-, Süd- und Westzellen) kontaminiert sind.
- Die letzte Stufe der Kontamination tritt ein, wenn keine sauberen Zellen mehr kontaminiert werden können.
Stichprobe
Unter Verwendung des oben beschriebenen Empfängers als Stufe 1 der Kontamination wird die Stufe 2 sein:
0 0 0 0 1
0 0 0 1 1
0 0 1 1 1
0 1 1 1 1
0 1 1 1 1
Die Stufe 3 der Kontamination wird sein:
0 0 0 1 1
0 0 1 1 1
0 1 1 1 1
0 1 1 1 1
0 1 1 1 1
Die Stufe 4 der Kontamination wird sein:
0 0 1 1 1
0 1 1 1 1
0 1 1 1 1
0 1 1 1 1
0 1 1 1 1
Und die Stufe 5 (in diesem Beispiel die letzte) wird sein:
0 1 1 1 1
0 1 1 1 1
0 1 1 1 1
0 1 1 1 1
0 1 1 1 1
Herausforderung
Wenn Sie eine Stufe der Kontamination als Eingabe angeben, sollten Sie die letzte Stufe der Kontamination ausgeben.
Sie dürfen ein vollständiges Programm oder eine Funktion schreiben. Sie können die Eingabe als Array / Liste, als getrennte Zahlen oder sogar als Zeichenfolge verwenden. Wählt den besten Weg, der zu Ihrer Sprache passt.
Die kürzeste Antwort in Bytes gewinnt!
Ein weiterer Testfall
Input:
1 1 0 0 1
0 0 0 0 0
0 1 0 0 1
0 0 0 0 0
1 0 0 0 1
Output:
1 1 0 0 1
1 1 0 0 1
1 1 0 0 1
1 1 0 0 1
1 1 0 0 1
Input:
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
Output:
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
Input:
1 0 0 1 0
0 0 1 0 1
0 0 0 0 0
1 0 0 0 0
0 0 1 0 0
Output:
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
Input:
0 1 0 0 0
0 0 0 0 1
0 0 1 0 0
1 0 0 0 0
0 0 0 1 0
Output:
0 1 0 0 0
0 0 0 0 1
0 0 1 0 0
1 0 0 0 0
0 0 0 1 0
1 0 0 1 0 \ 0 0 1 0 1 \ 0 0 0 0 0 \ 1 0 0 0 0 \ 0 0 1 0 0
als Testfall hinzufügen ?
0 1 0 0 0 \ 0 0 0 0 1 \ 0 0 1 0 0 \ 1 0 0 0 0 \ 0 0 0 1 0
, was unverändert bleibt.
1 0 1
es in der Ausgabe vorkommen? Liegt die mittlere Null nicht neben zwei1
s?