Diese Frage hat sich gerade bei der Codeüberprüfung geändert, und ich dachte, Sie könnten sie als Codegolf-Herausforderung anpassen:
Sie erhalten eine nicht leere Liste von x Häusern, die als Boolesche Werte dargestellt werden. Jeden Tag konkurrieren die Häuser mit benachbarten. 1 steht für ein "aktives" Haus und 0 für ein "inaktives" Haus. Wenn die Nachbarn auf beiden Seiten eines bestimmten Hauses entweder beide aktiv oder beide inaktiv sind, wird dieses Haus am nächsten Tag inaktiv. Andernfalls wird es aktiv.
def get_state_as_pos(thelist, pos):
if thelist[pos-1] == thelist[pos+1]:
return 0
else:
return 1
Wenn wir zum Beispiel eine Gruppe von Nachbarn [0, 1, 0] hätten, würde das Haus bei [1] 0 werden, da sowohl das Haus links als auch rechts inaktiv sind. Die Zellen an beiden Enden prüfen auch die gegenüberliegende Seite, sodass sich die Nachbarn bei Index 0 bei Index length-1
und Index n1 befinden und umgekehrt. Auch nach dem Aktualisieren der Zelle müssen Sie beim Aktualisieren der anderen Zellen den vorherigen Status berücksichtigen, damit die Statusinformationen jeder Zelle gleichzeitig aktualisiert werden.
Die Funktion nimmt das Array von Zuständen und eine Anzahl von Schritten auf und sollte den Zustand der Häuser nach der angegebenen Anzahl von Schritten ausgeben.
input: states = [1, 0, 0, 0, 0, 1, 0, 0], steps = 1
output should be [0, 1, 0, 0, 1, 0, 1, 1]
input: states = [1, 1, 1, 0, 1, 1, 1, 1], steps = 2
intermediate state= [0, 0, 1, 0, 1, 0, 0, 0]
output should be [0, 1, 0, 0, 0, 1, 0, 0]
input: states = [1], steps=1
output: states= [0]
Nehmen Sie die Liste und die Schritte nach Belieben und geben Sie die resultierende Liste über die Standard-E / A aus . Standardlücken sind verboten. Dies ist Codegolf, kürzeste Antwort in Bytes gewinnt!
[0, 1, 0, 0, 1, 0, 1, 1]
?Antworten:
05AB1E ,
14131096 BytesBasierend auf Shaggys Japt-Lösung
Probieren Sie es online aus!
Unnötig clevere 9-Byte-Lösung:
Probieren Sie es online aus!
quelle
Python 2 , 72 Bytes
Probieren Sie es online aus!
quelle
Wolfram Language (Mathematica) , 31 Bytes
Probieren Sie es online aus!
CellularAutomaton
geht davon aus, dass die Eingabeliste zyklisch ist.quelle
JavaScript (ES6), 57 Byte
Nimmt Eingabe als
(steps)(array)
.Probieren Sie es online aus!
quelle
Japt
-mh
,11109 BytesE / A von Zuständen als Singleton-2D-Arrays.
Versuch es
quelle
Netzhaut , 51 Bytes
Probieren Sie es online aus! Übernimmt die Anzahl der Schritte in der ersten Zeile und eine Zeichenfolge von
0
s und1
s in der zweiten Zeile. Erläuterung:Löschen Sie die Anzahl der Schritte von der Eingabe.
Wiederholen Sie diese Anzahl mal.
Kopieren Sie die Endziffern an die anderen Enden, um das Umbrechen zu simulieren.
Führen Sie die XOR-Operation aus.
quelle
APL (Dyalog Extended) , 12 Byte SBCS
Volles Programm. Fordert stdin auf, ein Array von Zuständen und dann die Anzahl der Schritte einzugeben. Druckt nach Standard.
Probieren Sie es online aus!
⎕
Auswertung der Eingabe von der Konsole (Array von Status)⊢
dafür bewerben…1(
…)⍣⎕
Die folgende stillschweigende Funktion, die jedes Mal mit1
dem linken Argument eingegeben wird :⌽⍢⌽
Drehen Sie das rechte Argument in umgekehrter Reihenfolge 1 Schritt nach links (dh drehen Sie einen Schritt nach rechts).⌽≠
XOR mit dem Argument 1 Schritt nach links gedrehtquelle
Python 2 , 71 Bytes
Probieren Sie es online aus!
quelle
Gelee , 7 Bytes
Probieren Sie es online aus!
Volles Programm. Eine Singleton-Ausgabe wird als
x
statt dargestellt[x]
.quelle
Pyth , 24 Bytes
Probieren Sie es online aus!
quelle
Ruby , 59 Bytes
Probieren Sie es online aus!
quelle