Inspirado por Exibir uma cadeia de pequenas montanhas com um número ímpar no topo! por @sygmei .
Por que ter uma cadeia de montanhas quando você pode ter uma maciça?
Faça um programa que pegue um número de entrada e imprima uma montanha com cada número ímpar até o número de entrada.
(Onde "sudoeste" significa directly below and to the left
e "sudeste" significa directly below and to the right
)
Todo número terá um /
sudoeste a oeste e um \
sudeste. Começa 1
no topo e o próximo número vai para o sudoeste de um /
ou para o sudeste de a \
. O próximo número entrará na linha mais próxima do topo e da esquerda, o mais possível.
Para um número de vários dígitos, apenas o primeiro dígito precisa estar no lugar certo com os outros dígitos logo após e somente o primeiro dígito deve ter \
e /
sair dele.
A montanha até 1 ou 2 é apenas:
1
/ \
Uma montanha de até 3 ou 4 é apenas:
1
/ \
3
/ \
Para 25 ou 26:
1
/ \
3 5
/ \ / \
7 9 11
/ \ / \ / \
13 15 17 19
/ \ / \ / \ / \
21 23 25
/ \ / \ / \
Últimas duas linhas em que a entrada é 121:
111 113 115 117 119 121
/ \ / \ / \ / \ / \ / \
E as duas últimas linhas em que a entrada é 1019:
993 995 997 999 1001100310051007100910111013101510171019
/ \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \
Você pode assumir que a entrada será maior que 0 e menor que 10001 (exclusivo).
Os espaços à direita estão OK, e os espaços à frente extras estão bem, desde que haja o mesmo em todas as linhas.
Isso é código-golfe , então o programa mais curto em bytes vence.
Uma resposta simples para isso pode ser encontrada on-line aqui (em Python no repl.it) se você precisar de mais casos de teste.
Respostas:
05AB1E ,
54524746 bytesExperimente online!
Explicação
Eu poderia ter economizado 5 bytes com
ÅɹL£D€g__ÏRv"/ \ "yg×N·©úˆy4jJðÛ®>úˆ}¯R»
se eu tivesse pressionado esse bugfix para j que escrevi várias semanas atrás : /fonte
Lote, 335 bytes
fonte
cmd /Q /C file.bat
conta 3 bytes extras, mas ainda é melhor que isso@echo off
. Você deve postar isso na pergunta Dicas de lote.Python 2,
160149143 bytesObrigado TFeld por salvar 11 bytes e Artyer por salvar 6 bytes
fonte
i=len(y)
efor l in y:print' '*i+l;i-=1
em vez defor i,l in enumerate(y):print(len(y)-i-1)*' '+l
para -10 bytes\\
para\
uma vez que é antes um espaçowhile y:print' '*-~len(y)+y.pop(0)
. Ele salva 3 bytes.%-4d
justificá-lo por 4. #Perl, 134
133 bytes + 1 para a
-p
opçãoVersão formatada (a versão original em golfe usa "novas linhas" reais em vez de \ n)
fonte
Bash, 425 bytes
Formatado:
fonte