Escreva um programa ou função que desenhe uma estrela ASCII, considerando o tamanho dos braços como entrada.
Aqui está uma estrela de tamanho 1
_/\_
\ /
|/\|
Aqui está uma estrela de tamanho 2
/\
__/ \__
\ /
\ /
| /\ |
|/ \|
Aqui está uma estrela de tamanho 3
/\
/ \
___/ \___
\ /
\ /
\ /
| /\ |
| / \ |
|/ \|
E assim por diante.
Entrada
Um único número inteiro positivo em qualquer formato conveniente ,n > 0
.
Resultado
Uma representação em ASCII de uma estrela, seguindo as regras acima. Novas linhas iniciais / finais ou outro espaço em branco são opcionais, desde que os pontos sejam alinhados 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.
- Lacunas 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.
Respostas:
Carvão ,
2017 bytes-3 bytes graças a Neil.
Experimente online!Link é a versão detalhada.
Estou muito feliz com este golfe, então ...
Explicação
fonte
Polygon
... Estou fazendo algo errado?Polygon
deixa o cursor no último caractere, mas eu não estava usandoPolygon
... na verdade, eu também não estava usando o melhor código, agora estou com 17 anos.Move(:Right); for (n) Print("_");
.SOGL V0.12 ,
2724 bytesExperimente aqui!
Explicação:
fonte
Python 2 ,
166 160 157 155152 byteso
exec
abordagem é exatamente a mesma contagem de bytes.Experimente online!
Economizou 3 bytes graças a Jonathan Frech .
fonte
t=" ";y,z=t*2,"\\"
port,z=" \\";y=t+t
.Java 8,
385376344304285280268264252250+ 19bytesExperimente online!
fonte
int o=
fora do loop também ( 268 bytes )++
diretamente a última ocorrência dei
, desta forma: 264 bytes .Mathematica, 189 bytes
A linha 2 define o operador auxiliar
±
, que é usado para fazer a linha 4 ser avaliada como:Na linha 3, o
ReplaceAll
(/.
) pega uma matriz que representa a estrela do tamanho 1, bem como a lista de regras acima. Para as etapas finais, usamosArrayFlatten
, que é menor queSubstitutionSystem
, eStringRiffle
.fonte
Java 7, 295 bytes
Solução é método
f
.Experimente Online (JDK 8)
Ungolfed
Agradecimentos
fonte
x
1 desde o início:<T>String s(T s,int n){return"".format("%"+-~n+"s",s);}String f(int x){String n="\n",s="/",b="\\",o="",u="_";int i=0;for(x--;i<x;u+="_")o+=s(s,2*x-i+1)+s(b,2*i++)+n;o+=u+s+s(b,2*i++)+u+n;for(;i-->0;)o+=s(b,x-i)+s(s,4*x-2*(x+~i))+n;for(;++i<=x;)o+=s("|",x)+s(s,x-i)+s(b,2*i)+s("|",x-i)+n;return o;}
Python 2 , 137 bytes
Experimente online!
fonte