As árvores que estamos cultivando têm algumas regras que definem como elas crescem:
Regras de crescimento:
- Árvores consistem apenas em galhos.
- Ramos são feitos de uma combinação dos seguintes símbolos:
_
,\
,|
,/
, e_
Uma árvore começa como um único galho / tronco vertical (
|
) no chão (_
):__________________|___________________
O alimento para o crescimento dos ramos vem da luz.
- A luz começa com uma intensidade de 2 em cada ponto do céu e viaja diretamente para baixo.
- Cada galho é capaz de comer metade da luz disponível e o restante passa para galhos mais baixos.
- Assim, um galho sem outros galhos acima receberá 1 unidade de comida leve a cada estação, um galho com 1 galho acima receberá 0,5 unidades de alimento a cada estação e, em geral, um galho com n galhos 1 / (2 ^ n) unidades de alimento a cada estação.
- No final de cada estação, o alimento é totalizado começando pelo tronco e subindo e convertido em novos galhos e frutas (aplique as seguintes regras até que o galho se transforme em fruto ou tenha menos de 1 unidade de alimento restante):
- Se um ramo tiver menos de 1 unidade de alimento no final de uma temporada, todo o alimento desse ramo será armazenado nesse ramo até a próxima temporada.
- Se um ramo tiver uma quantidade maior ou igual a 1 unidade de alimento e tiver espaço para crescer, ele crescerá aleatoriamente um novo ramo, usando os padrões de crescimento disponíveis (veja abaixo) e armazenará o restante do alimento para a próxima temporada.
- Se um ramo tiver> = 1 unidade de alimento, sem lugar para crescer e tiver ramos secundários, ele distribui uniformemente o alimento aos ramos secundários
- Se um ramo tiver> = 1 unidade de alimento, nenhum lugar para crescer e nenhum ramo derivado, ele se tornará fruto (representado por
O
)
- Aqui estão as possíveis configurações de crescimento
Configurações de crescimento:
_ \ | / _ _ \ | / \ | / _
| | | | | \ \ \ \ / / / / __ \_ |_ _| _/ __
--- Vertical Branches --- --- Diagonal Branches --- --- Horizontal Branches ---
Exemplo de árvore potencial:
\
/ /
\/O |___//
\_/ \//O\_/
\__/|\|_/
\|/
__________________|__________________
Entrada:
Seu programa deve ter como entrada uma lista de quais instantâneos da árvore você gostaria de ver. Por exemplo [10,20,50] significa que você gostaria de ver a árvore após 10 temporadas, 20 e 50 temporadas.
Saída:
Para cada estação de entrada, seu programa deve produzir a estação e, em seguida, uma imagem da árvore nessa estação. Se ajudar, você pode definir uma idade máxima para a árvore, como 60, para que a altura máxima de uma árvore seja 61 e a largura máxima seja 121, e sempre mostre a árvore nessa escala. Caso contrário, fique à vontade para dimensionar sua imagem para qualquer árvore de tamanho. Por exemplo, se a entrada foi [0,1,2,3], sua saída pode ser:
Season 0:
_|_
Season 1:
\
__|__
Season 2:
_
\|
___|___
Season 3:
|_/ _
\|
____|___
Vencedora
Cada solução deve postar a saída da execução favorita do programa do codificador com a entrada de [10,40]
, junto com o código-fonte. Além disso, TODOS os critérios acima devem ser atendidos para se qualificar.
O vencedor será o qualificador com o maior número de votos.
Boa sorte e alegre plantio !!!