У деревьев, которые мы выращиваем, есть некоторые правила, которые определяют, как они растут:
Правила роста:
- Деревья состоят только из ветвей.
- Ветви состоят из комбинации следующих символов:
_
,\
,|
,/
, и_
Дерево начинается как одна вертикальная ветвь / ствол (
|
) на земле (_
):__________________|___________________
Пища для роста отрасли исходит от света.
- Свет начинается с интенсивности 2 в каждой точке неба и распространяется прямо вниз.
- Каждая ветвь способна съесть половину доступного ей света, а остальная часть проходит до более низких ветвей.
- Таким образом, ветвь без других ветвей над ней будет получать 1 единицу легкой пищи каждый сезон, ветвь с одной ветвью над ней будет получать 0,5 единицы пищи каждый сезон, и в целом ветвь с n ветвями над ней будет получать 1 / (2 ^ n) единиц еды каждый сезон.
- В конце каждого сезона еда подсчитывается, начиная с ствола и перемещаясь вверх, и превращается в новые ветви и фрукты (применяйте следующие правила, пока ветвь не превратится в фрукты или осталось менее 1 единицы пищи):
- Если в конце сезона в ветви есть менее 1 единицы пищи, все продукты для этой ветви хранятся в этой ветви до следующего сезона.
- Если ветвь имеет еду, большую или равную 1 единице, и имеет пространство для роста, она случайным образом выращивает новую ветвь, используя доступные модели роста (см. Ниже), и сохраняет оставшуюся пищу на следующий сезон.
- Если ветвь имеет> = 1 еду, негде расти и имеет ответвления, она равномерно распределяет еду по ответвлениям.
- Если ветвь имеет> = 1 еду, негде расти, и нет ответвлений, она становится плодом (представлена
O
)
- Вот возможные конфигурации роста
Конфигурации роста:
_ \ | / _ _ \ | / \ | / _
| | | | | \ \ \ \ / / / / __ \_ |_ _| _/ __
--- Vertical Branches --- --- Diagonal Branches --- --- Horizontal Branches ---
Пример потенциального дерева:
\
/ /
\/O |___//
\_/ \//O\_/
\__/|\|_/
\|/
__________________|__________________
Входные данные:
Ваша программа должна иметь в качестве входных данных список снимков дерева, которые вы хотели бы видеть. Например, [10,20,50] означало бы, что вы хотите увидеть дерево через 10 сезонов, 20 сезонов и 50 сезонов.
Выход:
Для каждого входного сезона ваша программа должна выводить сезон, а затем изображение дерева в этом сезоне. Если это помогает, вы можете определить максимальный возраст для дерева, например, 60 лет, чтобы максимальная высота для дерева была 61, а максимальная ширина была 121, а затем всегда показывать дерево в этом масштабе. В противном случае, не стесняйтесь масштабировать ваше изображение до любого размера дерева. Например, если вход был [0,1,2,3], ваш вывод может быть:
Season 0:
_|_
Season 1:
\
__|__
Season 2:
_
\|
___|___
Season 3:
|_/ _
\|
____|___
победитель
Каждое решение должно опубликовать вывод любимой программы кодировщика своей программы с вводом [10,40]
вместе с исходным кодом. Кроме того, ВСЕ вышеупомянутые критерии должны быть соблюдены, чтобы претендовать.
Победителем будет квалификатор с наибольшим количеством голосов.
Удачи и веселых посадок !!!