Você precisa escrever um programa ou uma função em qualquer idioma que produz esse padrão:
~|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||~
|~|||||||||||||||||||||||||||||||||||||||||||||||||||||||||~|
||~|||||||||||||||||||||||||||||||||||||||||||||||||||||||~||
|||~|||||||||||||||||||||||||||||||||||||||||||||||||||||~|||
||||~|||||||||||||||||||||||||||||||||||||||||||||||||||~||||
|||||~|||||||||||||||||||||||||||||||||||||||||||||||||~|||||
||||||~|||||||||||||||||||||||||||||||||||||||||||||||~||||||
|||||||~|||||||||||||||||||||||||||||||||||||||||||||~|||||||
||||||||~|||||||||||||||||||||||||||||||||||||||||||~||||||||
|||||||||~|||||||||||||||||||||||||||||||||||||||||~|||||||||
||||||||||~|||||||||||||||||||~|||||||||||||||||||~||||||||||
|||||||||||~|||||||||||||||||~|~|||||||||||||||||~|||||||||||
||||||||||||~|||||||||||||||~|||~|||||||||||||||~||||||||||||
|||||||||||||~|||||||||||||~|||||~|||||||||||||~|||||||||||||
||||||||||||||~|||||||||||~|||||||~|||||||||||~||||||||||||||
|||||||||||||||~|||||||||~|||||||||~|||||||||~|||||||||||||||
||||||||||||||||~|||||||~|||||||||||~|||||||~||||||||||||||||
|||||||||||||||||~|||||~|||||||||||||~|||||~|||||||||||||||||
||||||||||||||||||~|||~|||||||||||||||~|||~||||||||||||||||||
|||||||||||||||||||~|~|||||||||||||||||~|~|||||||||||||||||||
A saída é composta por 20 linhas de 61 caracteres cada.
Regras
- As brechas padrão são proibidas
- Pode haver uma nova linha final à direita no final da saída
- Pode não haver espaço em branco à direita em nenhuma linha da saída
Sem uma nova linha à direita, a soma de verificação md5 da saída é fde4e3b4606bf9f8c314131c93988e96
.
Com uma nova linha à direita, a soma de verificação md5 da saída é 1f0b43db4fec6594be202c8339024cb7
.
Isso é código-golfe , então o código mais curto em bytes vence.
Respostas:
C (gcc) ,
97828180 bytesJogou 15 bytes depois de aprender que
abs
é embutido em C, um byte adicional graças a Rogem por apontar que as declarações de minhas variáveis podem ser movidas para a função e outro byte graças a ceilingcat por sugerir emx=31;--x+31
vez dex=-31;++x<31
.Experimente online!
Isso gera uma nova linha à direita. A função
f
faz a saída.Explicação
A saída pode ser indicada como um gráfico.
(Os
+
s são mostrados apenas para fins de explicação e representam os eixos.)A equação deste gráfico éy=abs(10−abs(x)) como pode ser visto aqui neste link para um gráfico Desmos .
Em função
f
, temos dois for-loops que iteram por todas as coordenadas deste gráfico.y
passa de20
para1
e x passa de-30
para30
.Para cada
x
, vamos verificar seabs(10-abs(x))
iguaisy
fazendoabs(10-abs(x))-y
em um ternário. Se eles são iguais, isso gera0
um valor de falsey em C; caso contrário, ele será avaliado com algum valor positivo. Então, no ternárioabs(10-abs(x))-y?"|":"~"
, nósprintf
concordamos.E após cada linha, produzimos uma nova linha usando
puts("")
, e é assim que a função gera uma nova linha à direita.fonte
f(x,y)
vez dex,y;f()
Carvão ,
1615 bytes-1 byte graças a notjagan
Experimente online!
fonte
M
e movendo-se implicitamente.R ,
7067 bytes3 bytes graças a Giuseppe.
Experimente online!
fonte
""
para a1
para -1.Geléia ,
1816 bytesExperimente online!
fonte
Python 2.7,
16313813513311391 bytesExperimente online!
Editar 1: -25 bytes: alterei o algoritmo depois que me senti um pouco ambicioso. : P
Editar 2: -3 bytes: cortesia Felipe Nardi Batista
Editar 3: -2 bytes: cortesia de shooqie
Editar 4: -20 bytes: cortesia notjagan
Editar 5: -22 bytes: cortesia de Leaky Nun
fonte
a,b,c='1','2','3'
é a mesmaa='1';b='2';c='3'
eo mesmo que colocar cada um em sua própria linha, mas você pode ganhar bytes por desembalar cordas comoa,b,c='123'
n<m
mais curto quen-m<0
?/// , 231 bytes
Experimente online! Ou visualize-o interativamente aqui !
fonte
WendyScript , 65 bytes (excluir nova linha)
Experimente online!
Segue o mesmo princípio que a resposta C dada acima. A primeira linha é a
abs
função, a segunda linha executa duas para loops e saídas~
ou com|
base no gráfico. O último""
é usado para gerar uma nova linha após cada loop ativadoy
.fonte
abs
função versus a função principal.Vim, 59 bytes
Onde
^[
está a<ESC>
chavefonte
:11<CR>
pode ser11G
Japonês , 32 bytes
Experimente online! Certifique-se de expandir a caixa de saída.
Explicação
Defina
U
para|
repetir 20 vezes.Defina
V
para o intervalo[0,9]
(AÆ
) mapeado por:U
(implícito) com o caractere no índiceX
(valor atual) definido como (h
)~
.Defina
W
paraV
cada linha girada 10 (A
) caracteres à direita.Crie array:,
V, W, U
eV
com cada linha invertida (w
). Agora é a metade esquerda da forma, girada 90 ° para a esquerda.Achatar a matriz (
c
), palendromize-a (ê
), gire 90 ° para a direita (z
) e junte-se às novas linhas (·
).fonte
Pincel , 36 bytes
não concorrente
Explicação
Isso me lembra que eu preciso adicionar uma operação de espelho.
fonte
Oitava ,
1575754 bytesGolpeou ainda mais, graças às outras respostas e comentários.
Acabei de abordá-lo como a outra resposta com a função abs (10-abs (x)) e, em seguida, usei os caracteres ASCII certos para imprimir a imagem.
fonte
Pitão , 22 bytes
Experimente online!
fonte
V , 30 bytes
Experimente online!
fonte
Geléia , 18 bytes
Experimente online!
fonte
Chiclete , 90 bytes
Experimente online!
fonte
MathGolf , 22 bytes
Experimente online!
Explicação
Provavelmente é possível desviar de 2 a 3 bytes disso, vou ver o que posso fazer.
fonte
C (gcc) , 75 bytes
Experimente online!
Totalmente alterado da resposta do vacas charlatão
fonte
Positron , 165 bytes
Experimente online!
Eu acho que o Positron tem muitos bugs. Eu deveria atualizá-lo para o TIO, porque então
++
realmente funcionará.fonte
Mathematica,
7875 bytesexceto o
\n
é substituído por uma nova linha real. Experimente online! (Há espaços extras no início das linhas em Matemática por algum motivo, mas funciona bem no Mathematica .)Eu vim com uma apresentação minha, mas depois o Kritixi Lithos adicionou uma explicação deles e era bem parecida com a minha, mas usando uma fórmula um pouco mais inteligente, então agora isso é apenas um exemplo dessa resposta. (Vá e leia essa e a vote!)
fonte
Bubblegum , 93 bytes
Experimente online!
fonte
JavaScript (ES6), 87 bytes
fonte
Lua, 193 bytes
Observe que Lua não pode imprimir algo sem criar uma nova linha. Por esse motivo, eu tenho que quebrar uma das regras.
Minimamente minificado em grande parte:
Algumas alterações foram feitas durante a minificação, o que torna o programa menos extensível, mas menor.
Experimente: https://tio.run/##PY7LCoMwEEX3@YqQVVJTcWwRCp0vKV1oNa1QJ0UjGPr49TRq6eoO91wOcx/LEDp8vs1IF9da4lc5aa9aI6djkSt3a4h1pynxmwLOKD5iJog7sD2Pmf9yD@u0QrKOV6yhmkVTAtonUla8pHoLKm5BqZmtHHSmTCw9ZhoOvLZsQCHMogRdwNoMaSr/L9hevMSiePQtOTnMdwhf
Não tenho certeza se alguém já fez isso antes, mas tentei minificar carregando o programa como uma string e usando gsub (pesquisar / substituir). Inevitavelmente, aumentou o programa. No entanto, se esse programa fosse grande o suficiente, renderia em menos bytes.
Devido à sua relativa proximidade com o resultado real (240 bytes, apenas 41 mais), achei que o postaria. Se este programa tivesse mais de 350 bytes, provavelmente haveria uma redução.
fonte
Java 8, 113 bytes
Tenho a sensação de que os cheques (
j==i|j+i==60|i>9&(j-i==20|j+i==40)
definitivamente podem ser jogados de golfe de alguma maneira combinando vários cheques em um).Explicação:
Experimente aqui.
fonte
Perl 5 , 79 bytes
Experimente online!
fonte
Tcl , 104 bytes
Experimente online!
Tcl , 105 bytes
Experimente online!
Tcl , 109 bytes
Experimente online!
Tcl,
143 133 123110 110Ainda muito sem golfe, mas vou evoluí-lo depois:
demonstração
fonte
05AB1E ,
2019 bytesExperimente online.
Explicação:
20Ýû31∍û
gera a lista:fonte