Desenhe um ASCIIrisk

25

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 é , então a solução mais curta (em bytes) vence.
FlipTack
fonte
2
Quero tentar esse desafio ... mas parece meio arriscado . Por favor, desculpe meu humor terrível.
HyperNeutrino
1
O Stack Overflow possui uma política NoBadJokes, então vou ter que ignorar esse comentário. Política de desculpas, mas política
2
OK. Desculpe por violar a política. Obrigado por ignorar o meu comentário, respondendo a ele.
HyperNeutrino

Respostas:

5

05AB1E , 40 38 37 36 35 bytes

žQ2ô376S3*£`2ôvyN·ð×ýð«}rsJ2äsr)˜.c

Experimente online!

Explicação

žQ                                   # push the printable ascii chars
  2ô                                 # split into pairs
    376S                             # split the number 376 into a list of digits
        3*                           # multiply each by 3 to get [9,21,18]
          £                          # divide the pairs of ascii chars into 
                                     # pieces of these sizes
           `                         # flatten list to stack
            2ô                       # split the "legs" of the asterisk into pairs of pairs
              v                      # loop over the pairs of pairs
               yN·ð×ý                # join the pairs by index*2 spaces
                     ð«              # append a space
                       }             # end loop
                        rs           # move the middle section to top of stack
                          J2ä        # convert to a string split into 2 pieces
                             sr      # rearrange the stack in the correct order
                               )˜    # wrap in a flattened list
                                 .c  # pad each element with spaces on either side
Emigna
fonte
žQ2ôÐ9£s30£R21£RøsrR18£R2ôvyN·ð×ý})˜.C», Tenho 39, mas acho que você pode economizar um pouco com o ZIP.
Magic Octopus Urn
@carusocomputing: Eu não acho que o zip seja muito útil aqui, pois queremos que os caracteres permaneçam sequenciais. Dividir tudo em pares no início foi uma boa ideia. Parece um desperdício usar tantos r e s, mas não vejo uma maneira de contornar isso.
Emigna
13

Python 3 , 110 bytes

s='%c';print(('\n'.join(['%10c%c']*9+[s*21]*2+[' '*(8-i)+s*2+'  '*i+s*2for i in range(9)]))%(*range(32,128),))

Gera o modelo

         xx
         xx
         xx
         xx
         xx
         xx
         xx
         xx
         xx
xxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx
        xxxx
       xx  xx
      xx    xx
     xx      xx
    xx        xx
   xx          xx
  xx            xx
 xx              xx
xx                xx

com %cfor x, usa interpolação de cadeia range(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.

s='%c';print('\n'.join(['%10c%c']*9+[s*21]*2+[' '*(8-i)+s*2+'  '*i+s*2for i in range(9)]))%tuple(range(32,128))
xnor
fonte
Merece um prêmio de similaridade da Torre Eiffel!
Sergiol 22/01
11

V , 54 , 50 bytes

¬ ~9ñ9É 11|á
ñ2ñ20lá
ñ$18é 9ñ^y|Ehé
Pf xxywk$hP>ñd

Experimente online!

Diferentemente do habitual, este programa não contém caracteres imprimíveis.

Explicação:

¬ ~                     " Insert the entire printable ASCII range
   9ñ           ñ       " 9 times:
     9É                 "   Insert 9 spaces at the beginning of this line
        11|             "   Move to the 11'th column on this line
           á<CR>        "   And append a newline after the 11'th column

Agora o buffer fica assim:

          !
         "#
         $%
         &'
         ()
         *+
         ,-
         ./
         01
23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

Agora construímos o meio:

2ñ        ñ             " Two times:
  20l                   "   Move 20 characters to the right (because 'l' == 'right', duh)
     á<CR>              "   Append a newline

Aqui é onde fica um pouco estranho.

$                       " Move to the end of this line 
 18é                    " Insert 18 spaces before the last character
     9ñ                 " Repeat the following 9 times:
       ^                "   Move to the first non-whitespace character
        y|              "   Yank all the whitespace before the current character. 
                        "   We'll call this the "Leading whitespace register"
          E             "   Move to the end of the current WORD (up to before a space)
           h            "   Move back one character
            é<CR>       "   And insert a newline before the current character
P                       "   Paste the leading whitespace for indentation
 f                      "   Move forward to a space
   xx                   "   Delete two characters
                        "   (Note how we are inbetween the two bottom branches right now)
     yw                 "   Yank everything upto the next branch (all spaces)
                        "   We'll paste this on the line up so that we can yank it again later
                        "   To keep track of how far apart the branches are
       k$               "   Move up a line and to the end of that line
         hP             "   Move back a character and paste the whitespace we yanked
           >            "   Indent this line by one space
            ñ           "   End the loop

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,

>_      "Indent the current line
>>      "Indent the current line
>j      "Indent the current and next line
>G      "Indent every line

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 de ddou d_(que são equivalentes), podemos simplesmente ddeixar e V preencher o campo _para nós.

DJMcMayhem
fonte
Bom trabalho abusar do implícita ÿ:)
Kritixi Lithos
5

Python 3 170 165 155 147 bytes

Eu joguei tanto isso, esqueci como funciona ...

i=b=0
for x in range(32,127):a=x%2<1;c=x>90;d=x<50;print(end=[' '*9*d,['\n'+' '*(8-i),'  '*~-i][b]][c]*a+chr(x)+'\n'*(x==70or d*x%2));b^=a;i+=b*c*a

Experimente online!

FlipTack
fonte
5

JavaScript (ES6), 156115 114 bytes

Infelizmente, o infame String.fromCharCode()custa 19 bytes.

f=(x=y=k=1)=>k<96?String.fromCharCode(x-22?y/2^5&&(y>9?x-y+1>>1&&22-y-x>>1:x/2^5)?32:31+k++:(x=!++y,10))+f(x+1):''

console.log(f())

Formatado e comentado

f = (                         // given:
  x =                         //   - x = current column
  y =                         //   - y = current row
  k = 1                       //   - k = current ASCII character code, minus 31
) =>                          //
  k < 96 ?                    // if we havent't reached character #127 (96 + 31):
    String.fromCharCode(      //   let's compute the next character
      x - 22 ?                //   if x is not equal to 22 (end of line):
        y / 2 ^ 5 && (        //     if y doesn't equal 10 or 11 (horizontal bar):
          y > 9 ?             //       and either y is greater than 9:
            x - y + 1 >> 1 && //         and we are not located on one of the
            22 - y - x >> 1   //         bottom diagonals
          :                   //       or y is less or equal to 9:
            x / 2 ^ 5         //         and x doesn't equal 10 or 11 (vertical bar)
        ) ?                   //     then:
          32                  //       append a space
        :                     //     else:
          31 + k++            //       append the next ASCII character
      :                       //   else:
        (x = !++y, 10)        //     increment y, reset x and append a LineFeed
    ) + f(x + 1)              //   do a recursive call with x + 1
  :                           // else:
    ''                        //   stop recursion
Arnauld
fonte
Eu acho que você pode fazer String.fromCharCode(...[...Array(n)].map(_=>k++))para salvar 4 bytes.
ETHproductions
@ETHproductions Gosto da ideia de chamar String.fromCharCode()uma matriz, mas optei por outra abordagem. Obrigado mesmo assim!
Arnauld
3

QBIC , 153 151 bytes

[32,49,2|?space$(9)+chr$(a)+chr$(a+1)][2|X=Y[a,a+20|X=X+chr$(c)]a=a+21?X][0,8|X=space$(8-d)[0,1|X=X+chr$(a+e)]X=X+space$(d*2)[2,3|X=X+chr$(a+f)]a=a+f?X

É realmente apenas uma série de loops FOR e lançando um int para um personagem ( chr$()).

Saída de amostra:

          !
         "#
         $%
         &'
         ()
         *+
         ,-
         ./
         01
23456789:;<=>?@ABCDEF
GHIJKLMNOPQRSTUVWXYZ[
        \]^_
       `a  bc
      de    fg
     hi      jk
    lm        no
   pq          rs
  tu            vw
 xy              z{
|}                ~
steenbergh
fonte
3

Perl , 113 bytes

112 bytes de código + -lsinalizador.

sub g{chr$c+++32}print$"x9,&g,&g for 0..8;print map&g,0..20for 0,1;print$"x-$_,&g,&g,$"x(16+2*$_),&g,&g for-8..0

Experimente online!

dada
fonte
3

PHP, 110 105 103 93 91 bytes

for(;$c<95;$y+=!$x%=21)echo"
"[$x],chr(31+($y%11<9&(max($y,10)-abs(9.5-$x++))%11<9?:++$c));

imprime uma nova linha principal. Execute -nrou 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

If $x is 0, print a newline. ("\n"[$x] is newline for $x=0; empty for every larger $x)
if $y is neither 9 nor 10 (not middle part: $y<9|$y>10 <=> $y%11<9)
AND distance to center == abs(9.5-$x) (in [0.5,1.5,..,10.5]) ->
    lower part:     abs($y-10-distance)>1                   => ($y-distance)%11<9
                (this works because $y is always <20)
    upper part: $x<9|$x>10 <=> distance>1 <=> 10-distance<9 => (10-distance)%11<9
                (this works because % has negative results for negative first operands)
    both parts: $y>9?$y:10 <=> max($y,10)
// $a?:$b evaluates to $a if $a is truthy, to $b else
// and the ternary condition evaluates to 1 if the coords are not in the shape
then print chr(31+1) = space
else print chr(31+incremented $c)
Titus
fonte
2

Pitão , 53 bytes

js.e@[+L*9;cb2c2b.e+*-8Ydj*yYdZcL2cb4)kcsrdC127,18 60

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 60divide essa string em índices 18e 60, fornecendo uma lista de três strings correspondentes às diferentes partes da saída: top, middle e bottom.

.einicia um mapa enumerado sobre as cadeias com as cadeias como be seus índices como k.

[...)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

    cb2divide a sequência em pares de caracteres e +L*9;acrescenta 9espaç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.

    .einicia um mapa enumerado, com os pares de cadeias de caracteres como Ze seus índices como Y.

    j*yYdZjunta os pares em 2*Yespaços e +*-8Ydprecede 8-Yespaços.

jsmescla todos os resultados e ingressa na lista resultante em novas linhas. Isso é impresso implicitamente.

TheBikingViking
fonte
2

Haskell , 144 bytes

b!n=[1..n]>>b
('*':r)#(a:s)=a:r#s
(a:r)#s=a:r#s
r#s=r
p="**"
f=unlines([" "!9++p]!9++["*"!21]!2++[" "!(8-n)++p++" "!(2*n)++p|n<-[0..8]])#[' '..]

Experimente online!

Explicação:

b!n=[1..n]>>bdefine uma função !que repete uma lista ou sequência de b nvezes.

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 ' '.

Laikoni
fonte
Tarde demais para a festa aqui, mas " "!(2*n)pode ser "(TWO SPACES)"!n.
Lynn
2

Carvão vegetal , 39 bytes (não competitivo)

GH↑χ→⁴↓χ→¹¹↓⁴←χ↘χ←⁴↖⁹←²↙⁹←⁴↗χ←⁹↑⁴→⁹ ↓¤γ

Experimente online! AST forneceu explicações, χsendo a variável pré-inicializada para 10.

Somente ASCII
fonte
2

J, 63

(não competindo)

a.{~32>.31+20 21$(* +/\),(9 21&$@{.,1:,1:,}.)(+.1&|."1)|.=|i:10

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 mesmo
  • 20 21 $ reverter a forma para um bloco 20 linhas de 21 elementos
  • 31 + adicione 31 porque o primeiro 1 deve ser um código de caractere de espaço 32
  • 32 >. andar em 32
  • a. {~ escolher caracteres do ascii embutido
Jayprich
fonte
4
Bem-vindo ao PPCG! Como você marcou isso como não competindo?
Martin Ender
Eu apenas pensei em acrescentar meu esforço, mesmo depois de muito tempo [15 meses] após o lançamento da competição. Você está dizendo que cada quebra-cabeça permanece aberto? .. também para a expressão J para imprimir fora do REPL, ou seja, quando executado em um script eu preciso prefixo smoutputde comando ou equivalente
jayprich
Os desafios geralmente permanecem abertos indefinidamente (mesmo que uma resposta já tenha sido aceita). Existem alguns tipos especiais de desafios que às vezes se fecham a novas entradas (encadeamento de respostas, policiais e ladrões, rei da colina), mas esses geralmente o dizem na descrição do desafio. Para saber se este é um formato de resposta válido, você teria que perguntar a alguém com mais experiência em J, mas as respostas REPL geralmente são boas desde que estejam marcadas como tal.
Martin Ender
1

Ruby, 91 bytes

->{(-11..8).map{|i|["%s"*21,"%#{9-i}s%s%#{i*2+1}s%s","%10s%s"][i/2<=>-1]}*$/%[*' '..?~,$/]}

Ungolfed

->{(-11..8).map{|i|            #For each line
  ["%s"*21,                    #If i/2==-1 make a format string of 21 %s
   "%#{9-i}s%s%#{i*2+1}s%s",   #If i/2>-1 make a format string %{9-i}s%s%{i*2+1}s%s
   "%10s%s"][i/2<=>-1]         #If i/2<-1 make a format string %10s%s
  }*$/%                        #Join the format strings with newlines $/ then use sprintf operator %
  [*' '..?~,$/]                #to replace the %s with *' '..'~' and a newline for last corner.
}
Level River St
fonte
1

Eu perdi uma resposta em c # então ...

C # (.NET Core) , 175 174 bytes

_=>{var r="";for(int i=0,j,d=32,s=1;i<54;i++)for(j=0;j++<"*#4#4#4#4#4#4#4#4#+K)%1###/#%#-#'#+#)#)#+#'#-#%#/###1#"[i]-33;)r+=(char)(i%2<1?32:d++)+(s++%21<1?"\n":"");return r;}

Experimente online!

  • 1 byte economizado graças a Kevin Cruijssen!
Charlie
fonte
1
Você pode salvar um byte, colocando as ints dentro do loop for:for(int i=0,j,d=32,s=1;i<54;i++)for(j=0
Kevin Cruijssen
1

Tcl , 209 bytes

proc I {} {incr ::i}
proc A {} {time {append a [$::F %c [I]]} 21;puts $a}
set i 31
time {puts [[set F format] %10c%c [I] [I]]} 9
A
A
time {puts [$F %[expr 32-[I]/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

Experimente online!


Tcl , 212 bytes

proc I {} {incr ::i}
proc A {} {time {append a [$::F %c [I]]} 21;puts $a}
set i 31
time {puts [[set F format] %10c%c [I] [I]]} 9
A
A
time {puts [$F %[expr (129-[I])/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

Experimente online!

tcl, 213

proc I {} {incr ::i}
set F format
proc A {} {time {append a [$::F %c [I]]} 21;puts $a}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
A
A
time {puts [$F %[expr (129-[I])/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

demonstração


tcl, 214

proc I {} {incr ::i}
set F format
proc A {} {time {append a [$::F %c [I]]} 21;puts $a}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
A
A
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

demonstração


tcl, 227

proc I {} {incr ::i}
set F format
proc A {} {time {append ::a [$::F %c [I]]} 21}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
A
set a $a\n
A
puts $a
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

demonstração

tcl, 236

proc I {} {incr ::i}
set F format
proc A {} {time {append ::a [$::F %c [I]]} 21}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
set a ""
A
set a $a\n
A
puts $a
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

demonstração


tcl, 237

proc I {} {incr ::i}
set F format
proc A {} {time {set ::a $::a[$::F %c [I]]} 21}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
set a ""
A
set a $a\n
A
puts $a
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

demonstração


Abordagem alternativa com o mesmo tamanho:

proc I {} {incr ::i}
set F format
proc A b {time {upvar $b c;set c $c[$::F %c [I]]} 21}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
set a ""
A a
set a $a\n
A a
puts $a
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

demonstração

Tcl, 288

lassign {set while puts format incr expr} S W P F I E
$S i 31
$W \$i<48 {$P [$F %10c%c [$I i] [$I i]]}
$S a ""
$W {[$I i]<71} {$S a $a[$F %c $i]}
$S a $a\n
$W \$i<92 {$S a $a[$F %c $i];$I i}
$P $a
$W \$i<128 {$P [$F %[$E (129-$i)/4]c%c $i [$I i]][$F %[$E $i/2-45]c%c [$I i] [$I i]]; $I i}

demonstração


tcl, 297 bytes (tentativa ingênua)

set i 31
while \$i<48 {puts [format %10c%c [incr i] [incr i]]}
set a ""
while {[incr i]<71} {set a $a[format %c $i]}
set a $a\n
while \$i<92 {set a $a[format %c $i];incr i}
puts $a
while \$i<128 {puts [format %[expr (129-$i)/4]c%c $i [incr i]][format %[expr $i/2-45]c%c [incr i] [incr i]]; incr i}

demonstração

sergiol
fonte
1
O que você quer dizer com "tentativa ingênua"? Você não deveria colocar o comprimento no título?
1
Quero dizer que há espaço para jogar mais, porque ainda há muita repetição. E eu vou jogar mais.
Sergiol 21/01
A abordagem bruta tem extensão de 254 bytes.
sergiol
209
somente ASCII
@ Somente ASCII: Obrigado. A minha não é exatamente igual à sua sugestão! ;)
sergiol
1

Poético , 899 bytes

ill be honest with you
i expect a big solitude
i guess i had a guilt
my own idea being:i was real alone,i was a lonely human
also,i am still
o,i guess i was expecting a shift
i figured,surely i know i am tired of silence
now i dreamed for a shift
a magical desire cant come
i am barely a man,so i guess i see why a woman i see ignores myself
i know i am awful
o,a night of passion and a moment of love
i am truly the foolish person,every time i am saying i may recapture a love
o,i think i can,i think i can
i really do know i am unfit
o,i notice a lot,i think i know i am unfit
o,a novel,or perhaps poetry in code,i do enjoy the writing
and i shudder and i wonder in a moment
i was a weirdo,i was a freak,or like,i am creepy
o,i think i was a misfit
i know i am,really
o,i ought not concern myself
and sure,i am still some joyless man
i focused and i tried
a lasting solace and joy is nearby for me

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. 😟

JosiahRyanW
fonte
0

Python 2.7, 194 188 bytes

k,l,c,s,r=8,0,chr,' ',range;o=''.join(map(chr,r(32,127)))
for i in r(0,18,2):print s*9+o[i:i+2]
print o[18:39]+'\n'+o[39:60]
for i in r(60,95,4):print s*k+o[i:i+2]+s*l+o[i+2:i+4];k-=1;l+=2
hashcode55
fonte
Você pode soltar 2 bytes mudando map(chrpara map(ccomo cjá foi definido comochr
0

Jq 1.5 , 180 bytes

foreach((range(9)|[9,2]),(range(2)|[0,21]),(range(9)|[8-.,2,.+.,2]))as$r({s:[range(32;127)]|implode};.r=$r|.p=""|until(.r==[];.p+=" "*.r[0]+.s[:.r[1]]|.s =.s[.r[1]:]|.r=.r[2:]);.p)

Expandido

foreach (                              # instruction sequence: [indent, count]
    (range(9)|[9,2]),                  # 9 rows of 2 characters indented 9 spaces
    (range(2)|[0,21]),                 # 2 rows of 21 characters
    (range(9)|[8-.,2,.+.,2])           # 9 rows of 4 characters with varying indent
) as $r (
    {s:[range(32;127)]|implode}        # state = ascii string
  ; .r = $r                            # current instruction
  | .p = ""                            # print string for this row
  | until(.r==[];                      # until current instruction is exhausted
        .p += " "*.r[0] + .s[:.r[1]]   # add to print string
      | .s = .s[.r[1]:]                # remove from state
      | .r = .r[2:]                    # remove from instruction
    )
  ; .p                                 # emit print string
 )

Experimente online!

jq170727
fonte
0

Barras ( /// ), 324 bytes

          !
         "#
         $%
         &'
         ()
         *+
         ,-
         .\/
         01
23456789:;<=>?@ABCDEF
GHIJKLMNOPQRSTUVWXYZ[
        \\]^_
       `a  bc
      de    fg
     hi      jk
    lm        no
   pq          rs
  tu            vw
 xy              z{
|}                ~

A primeira ação (padrão) no Barras é 'imprimir', para que a cadeia seja impressa. O /e \deve ser escapado pelo procedimento \s.

clabe45
fonte
Você deve adicionar a contagem de bytes e, de preferência, um link para um intérprete. Parece bastante não-destruído (não tenho certeza se é melhor fazer melhor em ///).
Stewie Griffin
É uma piada mostrar as belezas de ///, e vou adicioná-las!
clabe45
0

Java 8, 176 173 bytes

v->{for(int i=0,j,d=32,s=1;i<54;i++)for(j=0;j++<"*#4#4#4#4#4#4#4#4#+K)%1###/#%#-#'#+#)#)#+#'#-#%#/###1#".charAt(i)-33;)System.out.printf(s++%21<1?"%c\n":"%c",i%2<1?32:d++);}

Porto de @Charlie C # .NET resposta 's , por isso, certifique-se de upvote-lo.
-3 bytes graças a @ceilingcat .

Experimente online.

Kevin Cruijssen
fonte