Этот вопрос только что пересмотрен в ходе анализа кода, и я подумал, что вам может понравиться его адаптация в качестве задачи для 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]
?Ответы:
05AB1E ,
14131096 байтовНа основе решения Shaggy's Japt
Попробуйте онлайн!
Неоправданно умное 9-байтовое решение:
Попробуйте онлайн!
источник
Python 2 , 72 байта
Попробуйте онлайн!
источник
Wolfram Language (Mathematica) , 31 байт
Попробуйте онлайн!
CellularAutomaton
Предполагается, что входной список является циклическим.источник
JavaScript (ES6), 57 байт
Принимает вход как
(steps)(array)
.Попробуйте онлайн!
источник
Japt
-mh
,11109 байтВвод / вывод состояний в виде одноэлементных двумерных массивов.
Попробуй это
источник
Сетчатка , 51 байт
Попробуйте онлайн! Принимает количество шагов в первой строке и строку
0
s и1
s во второй строке. Объяснение:Удалите количество шагов из ввода.
Повторите это число раз.
Скопируйте конечные цифры на другие концы, чтобы имитировать перенос.
Выполните операцию XOR.
источник
APL (Dyalog Extended) , 12 байтов SBCS
Полная программа. Запрашивает stdin для массива состояний, а затем для количества шагов. Печать на стандартный вывод.
Попробуйте онлайн!
⎕
получить оцененный ввод из консоли (массив состояний)⊢
на что, применить ...1(
…)⍣⎕
Следующая молчаливая функция, введите число раз, каждый раз в1
качестве левого аргумента:⌽⍢⌽
повернуть правый аргумент на 1 шаг влево при обращении назад (т.е. повернуть на один шаг вправо)⌽≠
XOR с аргументом повернутым на 1 шаг влевоисточник
Python 2 , 71 байт
Попробуйте онлайн!
источник
Желе , 7 байт
Попробуйте онлайн!
Полная программа. Одиночный выход представляется как
x
вместо[x]
.источник
Pyth , 24 байта
Попробуйте онлайн!
источник
Рубин , 59 байт
Попробуйте онлайн!
источник