Esta questão acabou de rever a revisão de código e imaginei que você poderia adaptá-la como um desafio do codegolf:
Você recebe uma lista não vazia de x casas representadas como booleanos. A cada dia, as casas competem com as adjacentes. 1 representa uma casa "ativa" e 0 representa uma casa "inativa". Se os vizinhos de ambos os lados de uma determinada casa estiverem ativos ou inativos, essa casa ficará inativa no dia seguinte. Caso contrário, ele se torna ativo.
def get_state_as_pos(thelist, pos):
if thelist[pos-1] == thelist[pos+1]:
return 0
else:
return 1
Por exemplo, se tivéssemos um grupo de vizinhos [0, 1, 0], a casa em [1] se tornaria 0, pois a casa à esquerda e à direita estão inativas. As células em ambas as extremidades também verificam o lado oposto; portanto, os vizinhos no índice 0 estão no índice length-1
e no indexn1 e vice-versa. Mesmo após a atualização da célula, é necessário considerar seu estado anterior ao atualizar as demais, para que as informações de estado de cada célula sejam atualizadas simultaneamente.
A função pega a matriz de estados e várias etapas e deve gerar o estado das casas após o número especificado de etapas.
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]
Siga a lista e as etapas da maneira que desejar e envie a lista resultante via E / S padrão . As brechas padrão são proibidas. Este é o codegolf, a resposta mais curta em bytes ganha!
[0, 1, 0, 0, 1, 0, 1, 1]
?