To pytanie właśnie zyskało popularność podczas recenzowania kodu i pomyślałem, że może ci się spodobać dostosowanie do gry w codegolf:
Otrzymujesz niepustą listę x domów reprezentowanych jako booleany. Każdego dnia domy konkurują z sąsiednimi. 1 oznacza „aktywny” dom, a 0 oznacza „nieaktywny” dom. Jeśli sąsiedzi po obu stronach danego domu są albo aktywni, albo obaj nieaktywni, dom ten staje się nieaktywny następnego dnia. W przeciwnym razie staje się aktywny.
def get_state_as_pos(thelist, pos):
if thelist[pos-1] == thelist[pos+1]:
return 0
else:
return 1
Na przykład, gdybyśmy mieli grupę sąsiadów [0, 1, 0], wówczas dom w [1] stałby się 0, ponieważ zarówno dom po lewej, jak i po prawej są nieaktywne. Komórki na obu końcach sprawdzają również przeciwną stronę, więc sąsiedzi o indeksie 0 znajdują się w indeksie length-1
i indeksie 1 i odwrotnie. Nawet po zaktualizowaniu komórki należy wziąć pod uwagę jej poprzedni stan podczas aktualizacji innych, aby informacje o stanie każdej komórki były aktualizowane jednocześnie.
Funkcja przyjmuje tablicę stanów i liczbę kroków i powinna wyświetlać stan domów po określonej liczbie kroków.
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]
Wykonaj listę i wykonaj dowolne kroki i wyślij wynikową listę za pomocą domyślnych operacji we / wy . Standardowe luki są zabronione. To jest codegolf, wygrywa najkrótsza odpowiedź w bajtach!
[0, 1, 0, 0, 1, 0, 1, 1]
?Odpowiedzi:
05AB1E ,
14131096 bajtówOparty na rozwiązaniu Shaggy's Japt
Wypróbuj online!
Niepotrzebnie sprytne rozwiązanie 9-bajtowe:
Wypróbuj online!
źródło
Python 2 , 72 bajty
Wypróbuj online!
źródło
Wolfram Language (Mathematica) , 31 bajtów
Wypróbuj online!
CellularAutomaton
zakłada, że lista wejściowa jest cykliczna.źródło
JavaScript (ES6), 57 bajtów
Pobiera dane wejściowe jako
(steps)(array)
.Wypróbuj online!
źródło
Japt
-mh
,11109 bajtówWe / Wy stanów jako pojedyncze tablice 2D.
Spróbuj
źródło
Siatkówka , 51 bajtów
Wypróbuj online! Wykonuje szereg działań na pierwszej linii i ciąg
0
S i1
S na drugiej linii. Wyjaśnienie:Usuń liczbę kroków z danych wejściowych.
Powtórz tę liczbę razy.
Skopiuj cyfry końcowe na drugie końce, aby zasymulować zawijanie.
Wykonaj operację XOR.
źródło
APL (Dyalog Extended) , 12 bajtów SBCS
Pełny program Monituje stdin o tablicę stanów, a następnie o liczbę kroków. Drukuje na standardowe wyjście.
Wypróbuj online!
⎕
pobierz dane wejściowe z konsoli (tablica stanów)⊢
w tej sprawie zastosuj ...1(
…)⍣⎕
Następująca ukryta funkcja, wprowadzająca liczbę razy, za każdym razem z1
lewym argumentem:⌽⍢⌽
obróć prawy argument 1 krok w lewo, gdy jest odwrócony (tj. obróć jeden krok w prawo)⌽≠
XOR z argumentem obróconym o 1 krok w lewoźródło
Python 2 , 71 bajtów
Wypróbuj online!
źródło
Galaretka , 7 bajtów
Wypróbuj online!
Pełny program Wyjście singletonu jest reprezentowane jako
x
zamiast[x]
.źródło
Pyth , 24 bajty
Wypróbuj online!
źródło
Ruby , 59 bajtów
Wypróbuj online!
źródło