Це питання просто переглядалося на перегляд коду, і я подумав, що вам може сподобатися його як виклик кодогольфа:
Вам надається не порожній список 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
та індексі1 і навпаки. Навіть після оновлення комірки ви повинні враховувати її попередній стан при оновленні інших, щоб інформація про стан кожної комірки оновлювалася одночасно.
Функція приймає масив станів і ряд кроків і повинна виводити стан будинків після заданої кількості кроків.
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]
Виконайте список і кроки, які вам подобаються, і виведіть отриманий список за допомогою вводу / виводу за замовчуванням . Стандартні лазівки заборонені. Це кодогольф, найкоротша відповідь у байтових перемогах!
[0, 1, 0, 0, 1, 0, 1, 1]
?