成長しているツリーには、成長方法を定義するいくつかのルールがあります。
成長ルール:
- 木は枝だけで構成されています。
- ブランチは、以下の記号の組み合わせで構成されています
_
、\
、|
、/
、&_
ツリーは
|
、地面(_
)上の単一の垂直ブランチ/トランク()として始まります。__________________|___________________
枝の成長のための食物は光から来ています。
- 光は空の各ポイントで2の強度から始まり、まっすぐ下に進みます。
- 各枝は、利用可能な光の半分を食べることができ、残りは下の枝を通過します。
- したがって、上に他のブランチがないブランチは、毎シーズン1単位の軽食を獲得し、その上に1ブランチがあるブランチは、毎シーズン0.5単位の食べ物を獲得します。毎シーズン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]
、ソースコードとともにの入力で、プログラムのコーダーのお気に入りの実行の出力を投稿する必要があります。また、資格を得るには、上記のすべての基準を満たす必要があります。
勝者は、投票数が最も多い予選になります。
幸運と陽気な植栽!!!