Этот вопрос только что пересмотрен в ходе анализа кода, и я подумал, что вам может понравиться его адаптация в качестве задачи для Codegolf:
Вам дан непустой список x домов, представленных как логические значения. Каждый день дома конкурируют с соседними. 1 представляет «активный» дом, а 0 представляет «неактивный» дом. Если соседи по обе стороны данного дома либо активны, либо оба неактивны, то этот дом становится неактивным на следующий день. В противном случае он становится активным.
def get_state_as_pos(thelist, pos):
if thelist[pos-1] == thelist[pos+1]:
return 0
else:
return 1
Например, если бы у нас была группа соседей [0, 1, 0], то дом в [1] стал бы 0, так как оба дома слева и справа оба неактивны. Ячейки на обоих концах также проверяют противоположную сторону, поэтому соседи по индексу 0 находятся по индексу length-1
и по индексу n1, и наоборот. Даже после обновления ячейки вы должны учитывать ее предыдущее состояние при обновлении других, чтобы информация о состоянии каждой ячейки обновлялась одновременно.
Функция принимает массив состояний и количество шагов и должна выводить состояние домов после заданного количества шагов.
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]
Возьмите список и шаги, как вам нравится, и выведите итоговый список через ввод / вывод по умолчанию . Стандартные лазейки запрещены. Это Codegolf, кратчайший ответ в байтах выигрывает!
[0, 1, 0, 0, 1, 0, 1, 1]
?