Регулярные выражения · 11 из 17
Узор из письма в RLE
В «Вестнике» завели уголок для любителей игры «Жизнь». Читатели присылают свои узоры, но не картинкой, а по-своему коротко: bo$2bo$3o! — и Зоя Павловна, глядя на это, верстать отказывается. Верстальщик просит программу, которая развернёт запись в клетки.
Что сделать
Разверните узор, записанный в RLE, в сетку клеток: 1 — живая, 0 — пустая.
Что приходит
rle— текст письма: пометки, шапка с размером и сама запись узора
Что вернуть
Список рядов сверху вниз; ряд — список из 0 и 1 длиной в ширину из шапки, рядов — сколько в шапке.
Допишите функцию razvernut в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
с графикой когда тесты пройдут, ответ вашей функции нарисуется · все задачи с графикой
Шапка x = 3, y = 2 — узор шириной 3 и высотой 2. Запись bo$3o!: пустая, живая, конец ряда, три живые, конец. Ответ — [[0, 1, 0], [1, 1, 1]].
razvernut("x = 3, y = 2\nbo$3o!")
[[0, 1, 0], [1, 1, 1]]
Текст делится на строки. Строки, начинающиеся с #, — пометки, пустые строки пропускаются. Первая из остальных — шапка: x = ширина, y = высота, пробелов вокруг = и запятой может не быть, после высоты могут идти другие поля (, rule = B3/S23).
Все строки после шапки — одна запись, переносы строк в ней ничего не значат. Запись — знаки, перед каждым может стоять число — сколько раз его повторить (нет числа — один раз; число бывает многозначным):
b— пустая клетка,o— живая;$— конец ряда: следующие клетки — с начала нового ряда;3$— конец ряда трижды, то есть два ряда целиком пустые;!— конец записи, дальше не читают.
Прочие знаки (пробелы и т. п.) пропускаются. Клетки, до которых запись не дошла, — пустые: хвост ряда из b обычно не пишут.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.