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]
?