Словари · 17 из 23
Сад из правил
К выставке «Математика и природа» Зинаида Петровна нашла в фонде книгу Аристида Линденмайера «Алгоритмическая красота растений». В ней растения выращивают из строк. Берут короткую строку — «семечко» — и несколько раз заменяют в ней каждую букву по правилу: у водоросли правила такие — A становится AB, B становится A. Буквы, для которых правила нет (+, -, скобки), остаются как были. Правила удобно держать словарём: буква — на что её заменить.
Что сделать
Вырастите строку: столько раз, сколько сказано, замените в ней каждую букву по словарю правил — все буквы одновременно.
Что приходит
aksioma— начальная строкаpravila— словарь: буква — строка, на которую её заменитьshagov— сколько раз заменять, от 0
Что вернуть
Строку после shagov замен; буквы без правила остаются на месте.
Допишите функцию vyrastit в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
с графикой когда тесты пройдут, ответ вашей функции нарисуется · все задачи с графикой
Одно правило и одна замена: в строке "F" единственная буква F заменяется на "F+F-F-F+F" — это и ответ. Водоросль Линденмайера за три шага растёт так: A → AB → ABA → ABAAB.
vyrastit("F", {"F": "F+F-F-F+F"}, 1)
'F+F-F-F+F'
Один шаг: новая строка собирается из старой слева направо — каждая буква заменяется на pravila[буква], а если такой буквы в словаре нет, остаётся сама собой.
Замена одновременная: то, что появилось при замене, в этом же шаге уже не заменяется. Поэтому правила нельзя применять по очереди через replace: у водоросли A сначала стала бы AB, а потом эта же новая B превратилась бы в A.
Шаг повторяется shagov раз; при shagov = 0 возвращается сама aksioma.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.