Новогодняя задача: помогите Тирексу поставить и нарядить елочку

Условие
Сисадмин Тирекс засиделся допоздна и не успел не то что нарядить елку, но даже купить ее! У него нет главного символа праздника, но есть лапки, компьютер, IDE, технический склад ума и знание Python.
Задача
Помоги Тирексу вывести в консоли наряженную елку на любимом языке программирования. Педантичный Тирекс предъявляет следующие требования:
-
на вход программа получает два числа: rows отвечает за высоту елки в строчках (не менее трех), freq — за частоту появления украшений.
-
ветки елки — символ *.
-
игрушки — символы о, О, @ и 0.
-
елка имеет ствол из трех символов | и стоит на полу из символов _.
-
ветви елки расположены «ступенями»: первая состоит из трех строк, каждая следующая ниже — на одну больше.
-
первая строка следующей ниже «ступени» должна иметь на два символа меньше, чем последняя строка предыдущей.
-
елка должна иметь границы в виде символов / и .
-
между двумя украшениями по горизонтали должна быть минимум одна ветка.
-
украшения не должны висеть на границе елки (они же упадут!).
Бонусная задача
-
вывести снег символом . (точка).
-
раскрасить елку зеленым, фон — синим, игрушки — разными цветами (кроме зеленого и синего), снег — белым.
Попробуйте решить задачу самостоятельно и делитесь своими идеями в комментариях. А вариант ответа Тирекса ищите в Академии Selectel.