Escreva um programa ou função que desenhe uma árvore de árvores, construindo assim uma floresta.
As árvores são desenhadas como empilhar uma pirâmide. A primeira linha (superior) contém 1
árvore, a próxima linha contém 2
(para um total de 3
), a próxima contém 3
(para um total de 6
) e assim por diante. Se não houver árvores suficientes para completar uma linha completa, preencha-a à esquerda e deixe as manchas à direita vazias. Além disso, as árvores de nível inferior se sobrepõem levemente às árvores de nível superior devido à sua localização.
Esta é uma floresta de tamanho 1
/\
//\\
///\\\
||
||
Esta é uma floresta de tamanho 2
/\
//\\
/\///\\\
//\\ ||
///\\\||
||
||
Esta é uma floresta de tamanho 3
/\
//\\
/\///\\\/\
//\\ || //\\
///\\\||///\\\
|| ||
|| ||
Esta é uma floresta de tamanho 4
/\
//\\
/\///\\\/\
//\\ || //\\
/\///\\\||///\\\
//\\ || ||
///\\\|| ||
||
||
Esta é uma floresta de tamanho 5
(observe que o topo da quinta árvore está cobrindo o tronco da primeira árvore)
/\
//\\
/\///\\\/\
//\\ || //\\
/\///\\\/\///\\\
//\\ || //\\ ||
///\\\||///\\\||
|| ||
|| ||
(pule algumas)
Esta é uma floresta de tamanho 8
(estendendo o padrão)
/\
//\\
/\///\\\/\
//\\ || //\\
/\///\\\/\///\\\/\
//\\ || //\\ || //\\
/\///\\\/\///\\\||///\\\
//\\ || //\\ || ||
///\\\||///\\\|| ||
|| ||
|| ||
e assim por diante.
Entrada
Um número inteiro positivo único em qualquer formato conveniente , n > 0
.
Saída
Uma representação da floresta em arte ASCII, seguindo as regras acima. Novas linhas à esquerda / à direita ou outro espaço em branco são opcionais, desde que todas as árvores se alinhem adequadamente.
Regras
- Um programa completo ou uma função são aceitáveis. Se uma função, você pode retornar a saída em vez de imprimi-la.
- As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
n
quais são as posições das árvores?Respostas:
Haskell 310 bytes
Ligue com
w 5
, por exemplo.Aqui o código não compactado:
fonte
JavaScript (ES6),
357297276 bytesEditar: salvou 21 bytes graças a @KritixiLithos.
fonte
repeat
, você pode alterarblah.repeat(val)
parablah[w="repeat"]
(val) e, em seguida, alterar as ocorrências subsequentes derepeat
para apenas[w](val)
para salvar bytesrepeat
está dentro dofor
loop e não será executadon=1
, mas ainda assim pude salvar 21 bytes.C ++ (no Windows),
330312308304303 bytesLigue para:
fonte
C (no Windows),
297295294 bytesSemelhante à minha resposta em C ++, mas eu postei isso porque é um pouco menor em C.
fonte
#import
é uma extensão (obsoleta) do GCC. Adequado para jogar golfe, no entanto.<stdio.h>
e assumir automaticamente uma variável global como sendoint
uma função a retornarint
.Javascript
418377 bytesObrigado a @Kritixi Lithos por ajudar no golfe com 39 bytes
Experimente Online
fonte
repeat
, você pode alterarblah.repeat(val)
parablah[w="repeat"](val)
e, em seguida, alterar as ocorrências subsequentes derepeat
para apenas[w](val)
salvar os bytes