Questa domanda è appena passata alla revisione del codice e ho pensato che ti potrebbe piacere adattarsi come una sfida di codegolf:
Ti viene dato un elenco non vuoto di x case rappresentate come booleane. Ogni giorno, le case competono con quelle adiacenti. 1 rappresenta una casa "attiva" e 0 rappresenta una casa "inattiva". Se i vicini su entrambi i lati di una determinata casa sono entrambi attivi o entrambi inattivi, quella casa diventa inattiva il giorno successivo. Altrimenti diventa attivo.
def get_state_as_pos(thelist, pos):
if thelist[pos-1] == thelist[pos+1]:
return 0
else:
return 1
Ad esempio, se avessimo un gruppo di vicini [0, 1, 0], la casa in [1] diventerebbe 0 poiché entrambe le case alla sua sinistra e alla destra sono entrambe inattive. Le celle su entrambe le estremità controllano anche il lato opposto, quindi i vicini all'indice 0 sono all'indice length-1
e indexn1 e viceversa. Anche dopo aver aggiornato la cella, è necessario considerare il suo stato precedente quando si aggiornano le altre in modo che le informazioni sullo stato di ciascuna cella vengano aggiornate contemporaneamente.
La funzione accetta la matrice di stati e un numero di passaggi e dovrebbe generare lo stato delle case dopo il dato numero di passaggi.
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]
Prendi l'elenco e i passaggi che preferisci e visualizza l'elenco risultante tramite l' I / O predefinito . Sono vietate le scappatoie standard. Questo è codegolf, vince la risposta più breve in byte!
[0, 1, 0, 0, 1, 0, 1, 1]
?