Bevor ich anfange, war diese Herausforderung ursprünglich nicht meine
Credits an die Universität von Waterloo. Dies kam vom kanadischen Computerwettbewerb 2016, Senior Problem 5. Hier ist ein anklickbarer Link zum PDF des Wettbewerbs:
http://cemc.uwaterloo.ca/contests/computing/2016/stage%201/seniorEn.pdf
Hier ist ein Link zur Seite:
http://cemc.uwaterloo.ca/contests/past_contests.html
Herausforderung
Bestimmen Sie bei einem Wrapping-Array mit zwei konstanten Werten die Konfiguration nach der n
Entwicklung für eine positive Ganzzahl-Eingabe n
. Diese beiden Werte repräsentieren eine lebende Zelle und eine tote Zelle. Entwicklungen funktionieren so:
Evolution!
Nach jeder Iteration lebt eine Zelle, wenn sie in der vorherigen Iteration genau einen lebenden Nachbarn hatte. Noch weniger und es stirbt an Einsamkeit; mehr und es stirbt an Überfüllung. Die Nachbarschaft ist exklusiv: dh jede Zelle hat zwei Nachbarn, nicht drei.
Lassen Sie uns zum Beispiel sehen, wie 1001011010
sich etwas entwickeln würde, wo 1
sich eine lebende Zelle und 0
eine tote Zelle befinden.
(0) 1 0 0 1 0 1 1 0 1 0 (1)
* $ %
Die Zelle an der *
hat eine tote Zelle auf beiden Seiten, so dass sie an Einsamkeit stirbt.
Die Zelle an der $
hat eine lebende Zelle auf der einen Seite und eine tote Zelle auf der anderen Seite. Es wird lebendig.
Das Cel im %
hat eine lebende Zelle auf beiden Seiten, so dass es vor Überfüllung nicht geschützt ist.
Gewinnkriterien
Der kürzeste Code gewinnt.
I / O.
Die Eingabe ist eine Liste der Zellenzustände als zwei konsistente Werte und eine Ganzzahl, die die Anzahl der Eingaben in einem vernünftigen Format darstellt. Die Ausgabe soll eine Liste der Zellzustände nach der angegebenen Anzahl von Iterationen sein.
Testfälle
start, iterations -> end
1001011010, 1000 -> 1100001100
100101011010000, 100 -> 000110101001010
0000000101011000010000010010001111110100110100000100011111111100111101011010100010110000100111111010, 1000 -> 1001111111100010010100000100100100111010010110001011001101010111011011011100110110100000100011011001
Test Case
Dieser Testfall gefror hastebin und die Größenbeschränkung auf Pastebin überschritten
Theta(nt)
wo n
die Länge des Arrays und t
die Anzahl der Entwicklungen ist; Ein schnellerer Algorithmus dauert Theta(n lg t)
.