Списки · 20 из 26
Правило 30
Руслан ждёт заказы у кухни и рисует в тетради в клетку по правилу из журнала: каждая клетка новой строки смотрит на три клетки над собой — левую, свою и правую — и по таблице решает, закрасить ли себя. Таблицу из восьми ответов записывают одним числом от 0 до 255. С правилом 30 из одной клетки вырастает хаос, с правилом 90 — треугольники Серпинского, а правило 184 — та самая пробка на кольцевой: машина едет вправо, если впереди свободно.
Что сделать
Постройте по строке клеток следующую: каждая клетка смотрит на трёх соседей сверху и берёт ответ из правила.
Что приходит
ryad— строка клеток, список из 0 и 1pravilo— номер правила, от 0 до 255
Что вернуть
Новый список той же длины из 0 и 1; переданный не меняется.
Допишите функцию pokolenie в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
с графикой когда тесты пройдут, ответ вашей функции нарисуется · все задачи с графикой
Одна закрашенная клетка посередине, правило 30: pokolenie([0, 0, 0, 1, 0, 0, 0], 30). Её соседи слева и справа и она сама видят над собой одну единицу в разных местах — все трое закрашиваются: [0, 0, 1, 1, 1, 0, 0].
pokolenie([0, 0, 0, 1, 0, 0, 0], 30)
[0, 0, 1, 1, 1, 0, 0]
Для каждой клетки берутся три клетки строки ryad: левая соседка, она сама и правая соседка. За краями строки клеток нет — там нули.
Тройка — это номер от 0 до 7: 4 · левая + 2 · сама + правая. Новое значение клетки — разряд с этим номером в двоичной записи pravilo, считая разряды с нуля справа: (pravilo >> номер) & 1.
Правило 30 — это 00011110 в двоичной: тройка 100 (номер 4) даёт 1, тройка 110 (номер 6) — 0, тройка 000 — 0.
Все клетки новой строки считаются по старой строке.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.