Há uma abundância de perguntas envolvendo o desenho de formas usando asteriscos - então eu pensei que, com tantos asteriscos por aí, deveríamos desenhar um, usando a tabela ASCII.
Desafio
Sua tarefa é escrever um programa ou função que não recebe entrada e gera esse texto exato:
!
"#
$%
&'
()
*+
,-
./
01
23456789:;<=>?@ABCDEF
GHIJKLMNOPQRSTUVWXYZ[
\]^_
`a bc
de fg
hi jk
lm no
pq rs
tu vw
xy z{
|} ~
Para referência, este site lista a tabela ASCII completa.
Regras
- A saída deve ser o texto exato, como mostrado acima. O espaço em branco à esquerda / à direita é permitido.
- Aplicam-se brechas de golfe padrão - não é possível ler este ASCIIrisk da Internet, etc.
- Isso é código-golfe , então a solução mais curta (em bytes) vence.
code-golf
string
ascii-art
kolmogorov-complexity
FlipTack
fonte
fonte
Respostas:
05AB1E ,
4038373635 bytesExperimente online!
Explicação
fonte
žQ2ôÐ9£s30£R21£RøsrR18£R2ôvyN·ð×ý})˜.C»
, Tenho 39, mas acho que você pode economizar um pouco com o ZIP.Python 3 , 110 bytes
Gera o modelo
com
%c
forx
, usa interpolação de cadeiarange(32,128)
para inserir os valores ASCII no padrão.Experimente online!
O Python 2 é um byte a mais, com a descompactação da tupla mais longa, mas mais curta
print
.fonte
V ,
54, 50 bytesExperimente online!
Diferentemente do habitual, este programa não contém caracteres imprimíveis.
Explicação:
Agora o buffer fica assim:
Agora construímos o meio:
Aqui é onde fica um pouco estranho.
Aqui está uma nota importante. O
>
comando é realmente um operador , o que significa que ele não faz nada sem um argumento, o texto para operar. Por exemplo,Mas como esse comando está em loop, podemos salvar um caractere não fornecendo um operador. No final de um loop, se houver um operador pendente, ele será preenchido
_
(a linha atual) como um argumento implicitamente.Agora vou admitir que esse loop é um pouco estranho, e pode ser difícil acompanhar como deve ser todo o texto a qualquer momento. Portanto, você pode usar este programa mais simples para ver como ficará depois de N loops.
Se você configurá-lo para 9, poderá ver que temos um pouco de texto extra para nos livrar. (Apenas a linha atual).
Então, excluímos a linha atual com
dd
. Mas espere! Você sabe como eu disse que os operadores precisam adotar um argumento que às vezes é preenchido implicitamente? Os argumentos também são implicitamente preenchidos no final do programa. Então, em vez dedd
oud_
(que são equivalentes), podemos simplesmented
deixar e V preencher o campo_
para nós.fonte
ÿ
:)Python 3
170165155147 bytesEu joguei tanto isso, esqueci como funciona ...
Experimente online!
fonte
JavaScript (ES6),
156…115114 bytesInfelizmente, o infame
String.fromCharCode()
custa 19 bytes.Formatado e comentado
fonte
String.fromCharCode(...[...Array(n)].map(_=>k++))
para salvar 4 bytes.String.fromCharCode()
uma matriz, mas optei por outra abordagem. Obrigado mesmo assim!QBIC ,
153151 bytesÉ realmente apenas uma série de loops FOR e lançando um int para um personagem (
chr$()
).Saída de amostra:
fonte
Perl , 113 bytes
112 bytes de código +
-l
sinalizador.Experimente online!
fonte
PHP,
1101051039391 bytesimprime uma nova linha principal. Execute
-nr
ou teste on-line .O princípio básico é adotado por Arnauld, mas isso itera.
E tira uma boa vantagem das previsões implícitas do PHP:
NULL para int para índice de string, float para int for
%
, booleano para int for&
e for+=
.explicação com pseudo código
fonte
Pitão , 53 bytes
Um programa que imprime o resultado.
Experimente online!
Como funciona
srdC127
cria uma lista dos caracteres imprimíveis ASCII e concatena isso em uma sequência de caracteres.c....,18 60
divide essa string em índices18
e60
, fornecendo uma lista de três strings correspondentes às diferentes partes da saída: top, middle e bottom..e
inicia um mapa enumerado sobre as cadeias com as cadeias comob
e seus índices comok
.[...)
cria uma lista contendo a ação desejada para cada parte do diagrama. A ação correta é escolhida indexando na lista com o índice atual, usando@...k
.Topo
cb2
divide a sequência em pares de caracteres e+L*9;
acrescenta9
espaços a cada par.Meio
c2b
divide a cadeia em duas cadeias de comprimento igual.Inferior
cL2cb4
divide a string em grupos de quatro caracteres e cada grupo em pares..e
inicia um mapa enumerado, com os pares de cadeias de caracteres comoZ
e seus índices comoY
.j*yYdZ
junta os pares em2*Y
espaços e+*-8Yd
precede8-Y
espaços.js
mescla todos os resultados e ingressa na lista resultante em novas linhas. Isso é impresso implicitamente.fonte
Haskell , 144 bytes
Experimente online!
Explicação:
b!n=[1..n]>>b
define uma função!
que repete uma lista ou sequência deb
n
vezes.unlines([" "!9++p]!9++["*"!21]!2++[" "!(8-n)++p++" "!(2*n)++p|n<-[0..8]])
usa esta função para desenhar um asterisco de asteriscos (Oh, a ironia!):#
é definido como uma função que substitui consecutivamente*
em uma sequência de caracteres por caracteres de uma determinada lista. É chamado com o asterisco acima, e[' '..]
é uma lista infinita de todos os caracteres começando com o espaço' '
.fonte
" "!(2*n)
pode ser"(TWO SPACES)"!n
.Carvão vegetal , 39 bytes (não competitivo)
Experimente online! AST forneceu explicações,
χ
sendo a variável pré-inicializada para10
.fonte
J, 63
(não competindo)a expressão avalia da direita para a esquerda assim:
i: 10
conta de -10 a +10|
faça abdominais para obter +10 a 0 de volta para +10=
auto classificar para obter a forma de V de 1 em um bloco de 0|.
ordem da linha inversa para obter / \ shape( +. 1&|."1 )
expressão de gancho muda cada linha para a direita em uma e OUs com a original( 9 21&$@{. , 1: , 1: , }. )
garfos aninhados para colocar na horizontal e esticar a parte superior,
para transformar o bloco em uma sequência linear para acumulação( * +/\ )
acumular e multiplicar consigo mesmo20 21 $
reverter a forma para um bloco 20 linhas de 21 elementos31 +
adicione 31 porque o primeiro 1 deve ser um código de caractere de espaço 3232 >.
andar em 32a. {~
escolher caracteres do ascii embutidofonte
smoutput
de comando ou equivalenteRuby, 91 bytes
Ungolfed
fonte
Eu perdi uma resposta em c # então ...
C # (.NET Core) ,
175174 bytesExperimente online!
fonte
int
s dentro do loop for:for(int i=0,j,d=32,s=1;i<54;i++)for(j=0
Tcl , 209 bytes
Experimente online!
Tcl , 212 bytes
Experimente online!
tcl, 213
demonstraçãotcl, 214
demonstração
tcl, 227
demonstração
tcl, 236
demonstração
tcl, 237
demonstração
Abordagem alternativa com o mesmo tamanho:
demonstração
Tcl, 288
demonstraçãotcl, 297 bytes (tentativa ingênua)
demonstração
fonte
Poético , 899 bytes
Experimente online!
Poetic é um esolang que fiz em 2018 para um projeto de classe. É basicamente foda cerebral com palavras em vez de símbolos.
Este poema é ... deprimente. 😟
fonte
Python 2.7,
194188 bytesfonte
map(chr
paramap(c
comoc
já foi definido comochr
Jq 1.5 , 180 bytes
Expandido
Experimente online!
fonte
Barras ( /// ), 324 bytes
A primeira ação (padrão) no Barras é 'imprimir', para que a cadeia seja impressa. O
/
e\
deve ser escapado pelo procedimento\
s.fonte
Java 8,
176173 bytesPorto de @Charlie C # .NET resposta 's , por isso, certifique-se de upvote-lo.
-3 bytes graças a @ceilingcat .
Experimente online.
fonte