Dibuja un ASCIIrisk

25

Hay una gran cantidad de preguntas que involucran dibujar formas usando asteriscos, así que pensé que con tantos asteriscos por ahí, deberíamos dibujar uno, usando la tabla ASCII.

Reto

Su tarea es escribir un programa o función que no tome entrada, y envíe este texto exacto:

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

Como referencia, este sitio enumera la tabla ASCII completa.

Reglas

  • El resultado debe ser el texto exacto, como se muestra arriba. Se permite el espacio en blanco inicial / final.
  • Se aplican lagunas de golf estándar: no leer este ASCIIrisk de Internet, etc.
  • Este es el , por lo que gana la solución más corta (en bytes).
FlipTack
fuente
2
Quiero probar este desafío ... pero suena un poco arriesgado . Por favor disculpe mi terrible humor.
HyperNeutrino
1
Stack Overflow tiene una política de NoBadJokes, así que tendré que ignorar ese comentario. Lo sentimos pero es política
2
Bueno. Perdón por violar la política. Gracias por ignorar mi comentario al responderlo.
HyperNeutrino

Respuestas:

5

05AB1E , 40 38 37 36 35 bytes

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

Pruébalo en línea!

Explicación

ž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
fuente
žQ2ôÐ9£s30£R21£RøsrR18£R2ôvyN·ð×ý})˜.C», Tengo 39, pero creo que puedes afeitarte un poco con ZIP.
Magic Octopus Urn
@carusocomputing: no creo que zip sea muy útil aquí, ya que queremos que los personajes sigan siendo secuenciales. Sin embargo, dividir todo en pares al principio fue una buena idea. Se siente un desperdicio usar tantos r y s, pero no veo una forma de evitarlo.
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),))

Genera la plantilla.

         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

con %cfor x, luego usa la interpolación de cadenas range(32,128)para insertar los valores ASCII en el patrón.

Pruébalo en línea!

Python 2 es un byte más largo, con un desempaquetado de tuplas más largo pero más corto 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
fuente
¡Se merece un premio de similitud de la Torre Eiffel!
sergiol
11

V , 54 , 50 bytes

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

Pruébalo en línea!

A diferencia de lo habitual, este programa no contiene caracteres no imprimibles.

Explicación:

¬ ~                     " 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

Ahora el búfer se ve así:

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

Ahora construimos el medio:

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

Aquí es donde se pone un poco raro.

$                       " 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

Aquí hay una nota importante. El >comando es en realidad un operador , lo que significa que no hace nada sin un argumento, el texto para operar. Por ejemplo,

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

Pero dado que este comando está en un bucle, podemos guardar un carácter al no proporcionar un operador. Al final de un ciclo, si algún operador está pendiente, completará_ (la línea actual) como argumento implícitamente.

Ahora admito que este bucle es un poco extraño, y puede ser difícil hacer un seguimiento de cómo debería verse todo el texto en un momento dado. Entonces puede usar este programa más simple para ver cómo se verá después de N bucles.

Si lo configura en 9, puede ver que tenemos un poco de texto adicional para eliminar. (Solo la línea actual).

Entonces eliminamos la línea actual con dd. ¡Pero espera! ¿Sabes cómo dije que los operadores tienen que tomar un argumento que a veces se rellena implícitamente? Los argumentos también se completan implícitamente al final del programa. Entonces, en lugar de ddo d_(que son equivalentes), simplemente podemos dy dejar que V complete el _para nosotros.

DJMcMayhem
fuente
Buen trabajo abusando de lo implícito ÿ:)
Kritixi Lithos
5

Python 3 170 165 155 147 bytes

He jugado tanto al golf, he olvidado cómo 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

Pruébalo en línea!

FlipTack
fuente
5

JavaScript (ES6), 156 ... 115 114 bytes

Lamentablemente, el infame String.fromCharCode()cuesta 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())

Formateado y 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
fuente
Creo que puedes hacer String.fromCharCode(...[...Array(n)].map(_=>k++))para ahorrar 4 bytes.
ETHproductions
@ETHproductions Me gusta la idea de recurrir String.fromCharCode()a una matriz, pero opté por otro enfoque. ¡Gracias de cualquier manera!
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 es solo una serie de bucles FOR y lanzar un int a un personaje (chr$() ).

Salida de muestra:

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

Perl , 113 bytes

112 bytes de código + -lbandera.

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

Pruébalo en línea!

Dada
fuente
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 una nueva línea principal. Ejecutar -nro probarlo en línea .

El principio básico se adoptó de Arnauld, pero esto se repite.
Y se aprovecha de los tipos de letra implícitos de PHP:
NULL a int para el índice de cadena, float a int for %, boolean a int for &y for +=.

explicación con pseudocó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
fuente
2

Pyth , 53 bytes

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

Un programa que imprime el resultado.

Pruébalo en línea!

Cómo funciona

srdC127 crea una lista de los caracteres ASCII imprimibles y los concatena en una cadena.

c....,18 60divide esta cadena en índices 18y 60, dando una lista de tres cadenas correspondientes a las diferentes partes de la salida: la parte superior, la media y la inferior.

.ecomienza un mapa enumerado sobre las cadenas con las cadenas como by sus índices comok .

[...)crea una lista que contiene la acción deseada para cada parte del diagrama. La acción correcta se elige indexando en la lista con el índice actual, usando @...k.

  • Parte superior

    cb2divide la cadena en pares de caracteres y +L*9;antepone 9espacios a cada par.

  • Medio

    c2b divide la cadena en dos cadenas de igual longitud.

  • Fondo

    cL2cb4 divide la cadena en grupos de cuatro caracteres y cada grupo en pares.

    .ecomienza un mapa enumerado, con los pares de cadenas como Zy sus índices como Y.

    j*yYdZune los pares en 2*Yespacios y +*-8Ydantepone 8-Yespacios.

jscombina todos los resultados y se une a la lista resultante en nuevas líneas. Esto se imprime implícitamente.

TheBikingViking
fuente
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]])#[' '..]

Pruébalo en línea!

Explicación:

b!n=[1..n]>>bdefine una función !que repite una lista o cadena- b nveces.

unlines([" "!9++p]!9++["*"!21]!2++[" "!(8-n)++p++" "!(2*n)++p|n<-[0..8]]) usa esta función para dibujar un asterisco de asteriscos (¡Oh, la ironía!):

         **
         **
         **
         **
         **
         **
         **
         **
         **
*********************
*********************
        ****
       **  **
      **    **
     **      **
    **        **
   **          **
  **            **
 **              **
**                **

#se define como una función que reemplaza consecutivamente *en una cadena con caracteres de una lista dada. Se llama con el asterisco de asteriscos anterior y [' '..]que es una lista infinita de todos los caracteres que comienzan con el espacio ' '.

Laikoni
fuente
Súper tarde a la fiesta aquí, pero eso " "!(2*n)puede ser "(TWO SPACES)"!n.
Lynn
2

Carbón de leña , 39 bytes (sin competencia)

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

Pruébalo en línea! AST proporcionó una explicación, χsiendo la variable preinicializada para 10.

Solo ASCII
fuente
2

J 63

(no compitiendo)

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

la expresión evalúa de derecha a izquierda así:

  • i: 10 cuenta de -10 a +10
  • | tomar abdominales para volver +10 a 0 a +10
  • = auto clasifica para obtener la forma de V de 1 en un bloque de 0
  • |. orden de fila inversa para obtener / \ shape
  • ( +. 1&|."1 ) la expresión de gancho desplaza cada fila a la derecha por una y OR con original
  • ( 9 21&$@{. , 1: , 1: , }. ) horquillas anidadas para colocar en horizontales y estirar la parte superior
  • , arrasar el bloque en una secuencia lineal para la acumulación
  • ( * +/\ ) acumularse y multiplicarse con uno mismo
  • 20 21 $ revierte la forma a un bloque 20 filas de 21 elementos
  • 31 + agregue 31 porque el primero 1 debe ser un código de espacio 32
  • 32 >. piso en 32
  • a. {~ recoger caracteres de ascii incorporado
jayprich
fuente
44
Bienvenido a PPCG! ¿Cómo es que marcó esto como no compitiendo?
Martin Ender
Solo pensé que agregaría mi esfuerzo a pesar de que es mucho tiempo [15 meses] después del lanzamiento de la competencia ... ¿Estás diciendo que cada rompecabezas permanece abierto? .. también para que la expresión J se imprima fuera de REPL, es decir, cuando se ejecuta en un script, necesitaría un prefijo de smoutputcomando o equivalente
jayprich
Los desafíos generalmente permanecen abiertos indefinidamente (incluso si ya se ha aceptado una respuesta). Hay algunos tipos especiales de desafíos que a veces se cierran a nuevas entradas (encadenamiento de respuestas, policías y ladrones, el rey de la colina me viene a la mente), pero generalmente lo dirán en la descripción del desafío. En cuanto a si este es un formato de respuesta válido, tendrías que preguntarle a alguien con más experiencia en J, pero las respuestas REPL generalmente están bien siempre que estén marcadas como tales.
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]}*$/%[*' '..?~,$/]}

Sin golf

->{(-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
fuente
1

Perdí una respuesta en C #, así que ...

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;}

Pruébalo en línea!

  • ¡1 byte guardado gracias a Kevin Cruijssen!
Charlie
fuente
1
Puede guardar un byte colocando la ints dentro del ciclo 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

Pruébalo en línea!


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

Pruébalo en línea!

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

manifestación


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

manifestación


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

manifestación

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

manifestación


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

manifestación


Enfoque alternativo con el mismo tamaño:

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

manifestación

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}

manifestación


tcl, 297 bytes (intento ingenuo)

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}

manifestación

sergiol
fuente
1
¿Qué quieres decir con "intento ingenuo"? ¿No deberías poner la longitud en el título en su lugar?
1
Quiero decir que hay espacio para jugar más al golf, porque todavía hay mucha repetición. Y lo jugaré más golf.
sergiol
El enfoque sin procesar tiene una extensión de 254 bytes.
sergiol
209
Solo ASCII
@ Solo ASCII: Gracias. ¡El mío no es exactamente igual a tu sugerencia! ;)
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

Pruébalo en línea!

Poetic es un esolang que hice en 2018 para un proyecto de clase. Básicamente es una mierda mental con longitudes de palabra en lugar de símbolos.

Este poema es ... deprimente. 😟

JosiahRyanW
fuente
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
fuente
Puede soltar 2 bytes cambiando map(chra map(ccomo cya se ha 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
 )

Pruébalo en línea!

jq170727
fuente
0

Barras ( /// ), 324 bytes

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

La primera acción (predeterminada) en Slashes es 'imprimir', por lo que se imprime la cadena. El /y \debe ser escapado procediendo \s.

clabe45
fuente
Debe agregar el recuento de bytes y preferiblemente un enlace a un intérprete. Sin embargo, parece bastante poco golfista (no estoy seguro de si es mejor hacerlo mejor en ///).
Stewie Griffin
Es una broma mostrar las bellezas de ///, ¡y las agregaré!
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++);}

Puerto de la respuesta C # .NET de @Charlie , así que asegúrese de votarlo.
-3 bytes gracias a @ceilingcat .

Pruébalo en línea.

Kevin Cruijssen
fuente