O padrão abaixo formará a base desse desafio.
/\
\/
/\
/ \
/ \
/\/ \/\
\/\ /\/
\ /
\ /
\/
/\
\/
Dada uma largura e altura de entrada, cada uma >=1
produz o padrão de arte ASCII acima repetido várias vezes, unindo (e sobrepondo) os pequenos diamantes.
Por exemplo, aqui está uma entrada com width = 2
e height = 1
:
/\ /\
\/ \/
/\ /\
/ \ / \
/ \ / \
/\/ \/\/ \/\
\/\ /\/\ /\/
\ / \ /
\ / \ /
\/ \/
/\ /\
\/ \/
Aqui está uma entrada width = 3
e height = 2
:
/\ /\ /\
\/ \/ \/
/\ /\ /\
/ \ / \ / \
/ \ / \ / \
/\/ \/\/ \/\/ \/\
\/\ /\/\ /\/\ /\/
\ / \ / \ /
\ / \ / \ /
\/ \/ \/
/\ /\ /\
\/ \/ \/
/\ /\ /\
/ \ / \ / \
/ \ / \ / \
/\/ \/\/ \/\/ \/\
\/\ /\/\ /\/\ /\/
\ / \ / \ /
\ / \ / \ /
\/ \/ \/
/\ /\ /\
\/ \/ \/
Regras e E / S
- A entrada e a saída podem ser fornecidas por qualquer método conveniente .
- Você pode imprimi-lo em STDOUT ou retorná-lo como resultado de uma função.
- Um programa completo ou uma função são aceitáveis.
- Qualquer quantidade de espaço em branco estranho é aceitável, desde que os caracteres sejam alinhados adequadamente.
- 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.
Respostas:
Tela ,
2625242118 bytesExperimente aqui!
-3 bytes corrigindo a
m
tela não repetidaExplicação:
fonte
JavaScript (ES8),
167161159 bytesNB: Isso está codificando o padrão. Veja minha outra resposta para uma abordagem matemática mais curta.
Toma entrada como
(width)(height)
.Experimente online!
Quão?
Codificamos a metade superior do padrão com dígitos:
\
/
Isto dá:
Para a metade inferior, usamos as linhas4 , 3 , 2 , 0 com
/
e\
invertidas.fonte
JavaScript (ES6), 139 bytes
Isso está usando uma abordagem bem diferente da minha resposta inicial, por isso estou postando isso separadamente.
Toma entrada como
(width)(height)
.Experimente online!
Quão?
Dada a larguraW e a altura h , desenhamos o caractere de saída por caractere sobre uma grade que é:
Para todas as outras células, calculamos:
Desenhamos um
"/"
if:Desenhamos um
"\"
if:Ou desenhamos um espaço se nenhuma dessas condições for cumprida.
fonte
C ++ (gcc) , 137 bytes
Experimente online!
Explicação
fonte
#include
Haskell , 179 bytes
Experimente online!
Haskell , 181 bytes
Experimente online!
fonte
reverse.map(map k)<>id
over(++).reverse=<<map(map k)
economiza 3 bytes nas duas soluções.map t
pode-se tornart<$>
etake$10*x+2
salvar outro byte também e, finalmente, você pode usarcycle"\\ /"!!n
mais"\\ /"!!mod n 3
- agora o segundo é mais curto :) Experimente online!Carvão ,
242220 bytesExperimente online! Link é a versão detalhada do código. Explicação:
Desenhe um oitavo do padrão original.
Duplique três vezes para concluir o padrão original.
Copie o número de vezes necessário horizontalmente.
Copie o número de vezes necessário verticalmente.
fonte
Powershell, 146 bytes
Explicação
O padrão é 10x10 caracteres:
O script:
Duas coisas para o golfe:
replace
.fonte
Perl 5
-p
, 148 bytesExperimente online!
fonte
PHP, 159 bytes
padrão retirado de mazzy; traduzido para 1-2-3, convertido em base26 -> decodificado pelo programa
requer PHP 5.5 ou posterior. Corra com
-nr
ou experimente online .o cálculo pode ser mais curto (como foi para Arnauld). Eu posso olhar para isso.
fonte
Kotlin ,
196135 bytesEconomizou 61 bytes graças à sugestão do ASCII-only de usar o algoritmo C ++ do AZTECCO.
Experimente online!
fonte
Python 3 ,
194192187127 bytes@ Solução apenas ASCII:
Experimente online!
Solução original
Experimente online!
-2 bytes graças ao @Black Owl Kai, mostrando que as partes superior e inferior podem ser acessadas a partir da matriz gerada, e não em variáveis separadas.
-5 mais bytes graças a @Black Owl Kai usando uma maneira mais criativa de armazenar os diamantes
Gera esta parte de cada diamante:
Um
/\
adicionado no final de cada linha para completá-lo. Em seguida, os/
s e\
s são trocados de modo a formar a parte superior de cada diamante, e a ordem das linhas é invertido para formar a metade inferior. Por fim, ele adiciona a linha superior de/\
s e a linha inferior de\/
s para completar a imagem.fonte
+=
/*=
e invertendo todo o diamante de cabeça para baixo, facilitando o armazenamento da última corda