Gli alberi che stiamo coltivando hanno alcune regole che definiscono come crescono:
Regole di crescita:
- Gli alberi consistono solo di rami.
- Rami sono costituiti da una combinazione delle seguenti simboli:
_
,\
,|
,/
, e_
Un albero inizia come un singolo ramo / tronco verticale (
|
) sul terreno (_
):__________________|___________________
Il cibo per la crescita dei rami viene dalla luce.
- La luce inizia con un'intensità di 2 in ogni punto del cielo e viaggia verso il basso.
- Ogni ramo è in grado di mangiare metà della luce a sua disposizione e il resto passa attraverso i rami inferiori.
- Pertanto, un ramo senza altri rami sopra otterrà 1 unità di cibo leggero ogni stagione, un ramo con 1 ramo sopra otterrà 0,5 unità di cibo ogni stagione, e in generale un ramo con n rami sopra di esso otterrà 1 / (2 ^ n) unità di cibo ogni stagione.
- Alla fine di ogni stagione, il cibo viene sommato a partire dal tronco e spostandosi verso l'alto e convertito in nuovi rami e frutti (applicare le seguenti regole fino a quando il ramo non si trasforma in frutta o ha meno di 1 unità di cibo rimanente):
- Se un ramo ha meno di 1 unità di cibo alla fine di una stagione, tutto il cibo per quel ramo viene immagazzinato in quel ramo fino alla stagione successiva.
- Se un ramo ha una quantità maggiore o uguale a 1 unità di cibo e ha spazio per crescere, cresce casualmente un nuovo ramo usando i modelli di crescita disponibili (vedi sotto) e immagazzina il cibo rimanente per la stagione successiva.
- Se un ramo ha> = 1 unità di cibo, nessun posto dove crescere e ha rami di rami, distribuisce uniformemente il cibo ai suoi rami di rami
- Se un ramo ha> = 1 unità di cibo, nessun posto dove crescere e nessun ramo di rami, diventa frutto (rappresentato da
O
)
- Ecco le possibili configurazioni di crescita
Configurazioni di crescita:
_ \ | / _ _ \ | / \ | / _
| | | | | \ \ \ \ / / / / __ \_ |_ _| _/ __
--- Vertical Branches --- --- Diagonal Branches --- --- Horizontal Branches ---
Esempio di albero potenziale:
\
/ /
\/O |___//
\_/ \//O\_/
\__/|\|_/
\|/
__________________|__________________
Ingresso:
Il tuo programma dovrebbe essere in grado di prendere come input un elenco di quali istantanee dell'albero che vorresti vedere. Ad esempio [10,20,50] significherebbe che vorresti vedere l'albero dopo 10 stagioni, 20 stagioni e 50 stagioni.
Produzione:
Per ogni stagione di input, il programma dovrebbe generare la stagione e quindi una foto dell'albero in quella stagione. Se aiuta, puoi definire un'età massima per l'albero, come 60, in modo che l'altezza massima per un albero sia 61 e la larghezza massima sia 121, quindi mostra sempre l'albero su quella scala. Altrimenti, sentiti libero di ridimensionare l'immagine su qualsiasi albero di dimensioni. Ad esempio, se l'input fosse [0,1,2,3], l'output potrebbe essere:
Season 0:
_|_
Season 1:
\
__|__
Season 2:
_
\|
___|___
Season 3:
|_/ _
\|
____|___
Vincitore
Ogni soluzione deve pubblicare l'output dell'esecuzione preferita del programmatore del proprio programma con input di [10,40]
, insieme al proprio codice sorgente. Inoltre, per qualificarsi devono essere soddisfatti TUTTI i criteri sopra indicati.
Il vincitore sarà il qualificatore con il maggior numero di voti.
Buona fortuna e buon impianto !!!