Disegna un ASCIIrisk


25

Ci sono molte domande che coinvolgono disegnare forme usando asterischi - quindi ho pensato, con così tanti asterischi là fuori, dovremmo disegnarne uno, usando la tabella ASCII.

Sfida

Il tuo compito è quello di scrivere un programma o una funzione che non accetta input e genera questo esatto testo:

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

Per riferimento, questo sito elenca la tabella ASCII completa.

Regole

  • L'output dovrebbe essere il testo esatto, come mostrato sopra. Sono ammessi spazi iniziali / finali.
  • Si applicano scappatoie golf standard - nessuna lettura di questo ASCIIrisk da Internet, ecc.
  • Questo è , quindi vince la soluzione più breve (in byte).

2
Voglio provare questa sfida ... ma sembra un po ' rischioso . Per favore, scusa il mio terribile umorismo.
HyperNeutrino,

1
Stack Overflow ha una politica NoBadJokes, quindi dovrò ignorare quel commento. Ci dispiace ma è politica

2
Va bene. Ci scusiamo per aver violato la politica. Grazie per aver ignorato il mio commento rispondendo ad esso.
HyperNeutrino,

Risposte:


5

05AB1E , 40 38 37 36 35 byte

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

Provalo online!

Spiegazione

ž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

žQ2ôÐ9£s30£R21£RøsrR18£R2ôvyN·ð×ý})˜.C», Ne ho 39, ma penso che puoi rasartene un po 'con ZIP.
Magic Octopus Urn

@carusocomputing: non credo che zip sia molto utile qui poiché vogliamo che i personaggi rimangano sequenziali. Dividere tutto a coppie all'inizio è stata una buona idea. Mi sembra inutile usare così tanti r & s ma non vedo un modo per aggirarlo.
Emigna,

13

Python 3 , 110 byte

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 il modello

         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, quindi utilizza l'interpolazione di stringhe su range(32,128)per inserire i valori ASCII nel modello.

Provalo online!

Python 2 è più lungo di un byte, con una tupla più lunga spacchettata ma più corta 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))

Merita un premio di somiglianza alla Torre Eiffel!
sergiol

11

V , 54 , 50 byte

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

Provalo online!

A differenza del solito, questo programma non contiene caratteri non stampabili.

Spiegazione:

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

Ora il buffer è simile al seguente:

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

Ora costruiamo il centro:

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

Ecco dove diventa un po 'strano.

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

Ecco una nota importante. Il >comando è in realtà un operatore , il che significa che non fa nulla senza un argomento, il testo su cui operare. Per esempio,

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

Ma poiché questo comando è in un ciclo, possiamo salvare un personaggio non dando un operatore. Alla fine di un ciclo, se un operatore è in sospeso, riempirà _(la riga corrente) come argomento implicitamente.

Ora ammetto che questo ciclo è un po 'strano, e può essere difficile tenere traccia di come dovrebbe apparire tutto il testo in un dato momento. Quindi puoi usare questo programma più semplice per vedere come apparirà dopo N loop.

Se lo imposti su 9, puoi vedere che abbiamo un po 'di testo extra da eliminare. (Solo la riga corrente).

Quindi eliminiamo la riga corrente con dd. Ma aspetta! Sai come ho detto che gli operatori devono prendere una discussione che a volte è implicitamente compilata? Gli argomenti sono anche implicitamente riempiti alla fine del programma. Quindi piuttosto che ddo d_(che sono equivalenti), possiamo semplicemente de lasciare che V compili il testo _per noi.


Bel lavoro che abusa dell'implicito ÿ:)
Kritixi Lithos il

5

Python 3 170 165 155 147 byte

Ho giocato a golf così tanto, ho dimenticato come funziona ...

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

Provalo online!


5

JavaScript (ES6), 156115 114 byte

Purtroppo, il famigerato String.fromCharCode()costa 19 byte.

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())

Formattato e commentato

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

Penso che tu possa fare String.fromCharCode(...[...Array(n)].map(_=>k++))per salvare 4 byte.
ETHproductions

@ETHproductions Mi piace l'idea di chiamare String.fromCharCode()un array, ma ho optato per un altro approccio. Grazie comunque!
Arnauld,

3

QBIC , 153 151 byte

[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

È davvero solo una serie di loop FOR e lanciare un int su un personaggio ( chr$()).

Uscita campione:

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

3

Perl , 113 byte

112 byte di codice + -lflag.

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

Provalo online!


3

PHP, 110 105 103 93 91 byte

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

stampa una nuova riga principale. Esegui -nro prova online .

Il principio di base è adottato da Arnauld, ma questo itera.
E trae vantaggio dai dattiloscritti impliciti di PHP: da
NULL a int per l'indice di stringa, da float a int per %, da booleano a int per &e per +=.

spiegazione con pseudo codice

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)

2

Pyth , 53 byte

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

Un programma che stampa il risultato.

Provalo online!

Come funziona

srdC127 crea un elenco dei caratteri ASCII stampabili e lo concatena in una stringa.

c....,18 60divide questa stringa in indici 18e 60, fornendo un elenco di tre stringhe corrispondenti alle diverse parti dell'output: la parte superiore, centrale e inferiore.

.einizia una mappa elencata sopra le stringhe con le stringhe come be i loro indici come k.

[...)crea un elenco contenente l'azione desiderata per ciascuna parte del diagramma. L'azione corretta viene scelta indicizzando nell'elenco con l'indice corrente, usando @...k.

  • Superiore

    cb2divide la stringa in coppie di caratteri e +L*9;antepone gli 9spazi a ciascuna coppia.

  • mezzo

    c2b divide la stringa in due stringhe di uguale lunghezza.

  • Parte inferiore

    cL2cb4 divide la stringa in gruppi di quattro caratteri e ogni gruppo in coppie.

    .einizia una mappa enumerata, con le coppie di stringhe come Ze i loro indici come Y.

    j*yYdZunisce le coppie agli 2*Yspazi e +*-8Ydantepone gli 8-Yspazi.

jsunisce tutti i risultati e unisce l'elenco risultante su newline. Questo viene quindi implicitamente stampato.


2

Haskell , 144 byte

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

Provalo online!

Spiegazione:

b!n=[1..n]>>bdefinisce una funzione !che ripete un elenco o string- b ntime.

unlines([" "!9++p]!9++["*"!21]!2++[" "!(8-n)++p++" "!(2*n)++p|n<-[0..8]]) usa questa funzione per disegnare un asterisco di asterischi (Oh, l'ironia!):

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

#è definita come una funzione che si sostituisce consecutivamente *in una stringa con caratteri di un determinato elenco. Si chiama con l'asterisco sopra di asterischi e [' '..]che è un elenco infinito di tutti i caratteri che iniziano con lo spazio ' '.


Super tardi alla festa qui, ma " "!(2*n)può essere "(TWO SPACES)"!n.
Lynn,

2

Carbone , 39 byte (non competitivo)

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

Provalo online! AST ha fornito una spiegazione, χessendo la variabile preinizializzata per 10.


2

J, 63

(non in competizione)

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

l'espressione valuta da destra a sinistra quindi:

  • i: 10 conta da -10 a +10
  • | prendi gli addominali per tornare da +10 a 0 a +10
  • = auto-classifica per ottenere la forma a V di 1 in un blocco di 0
  • |. ordine di riga inversa per ottenere / \ forma
  • ( +. 1&|."1 ) L'espressione hook sposta ogni riga a destra di una e le OR con l'originale
  • ( 9 21&$@{. , 1: , 1: , }. ) forchette nidificate da mettere in orizzontale e allungare la parte superiore
  • , radere il blocco in una sequenza lineare per il cumulo
  • ( * +/\ ) cumulare e moltiplicarsi con se stessi
  • 20 21 $ ripristina la forma in un blocco 20 file di 21 elementi
  • 31 + aggiungi 31 perché il primo 1 dovrebbe essere un codice spazio 32
  • 32 >. piano a 32
  • a. {~ scegli i caratteri da ascii incorporato

4
Benvenuti in PPCG! Come mai hai contrassegnato questo come non in competizione?
Martin Ender,

Ho solo pensato di aggiungere il mio sforzo anche se è passato molto tempo [15 mesi] dopo il lancio della competizione .. stai dicendo che ogni enigma rimane aperto? .. anche per l'espressione J da stampare all'esterno del REPL, cioè quando eseguito in uno script avrei bisogno di smoutput
aggiungere un

Le sfide rimangono generalmente aperte indefinitamente (anche se una risposta è già stata accettata). Ci sono alcuni tipi speciali di sfide che a volte si chiudono a nuove voci (concatenamento di risposte, poliziotti e ladri, il re della collina viene in mente), ma di solito lo diranno nella descrizione della sfida. Per quanto riguarda se questo è un formato di risposta valido, dovresti chiedere a qualcuno con più esperienza J, ma le risposte REPL vanno generalmente bene purché siano contrassegnate come tali.
Martin Ender,

1

Rubino, 91 byte

->{(-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.
}

1

Ho perso una risposta in C # quindi ...

C # (.NET Core) , 175 174 byte

_=>{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;}

Provalo online!

  • 1 byte salvato grazie a Kevin Cruijssen!

1
Puoi salvare un byte inserendo la ints nel for-loop:for(int i=0,j,d=32,s=1;i<54;i++)for(j=0
Kevin Cruijssen,

1

Tcl , 209 byte

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

Provalo online!


Tcl , 212 byte

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

Provalo 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

dimostrazione


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

dimostrazione


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

dimostrazione

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

dimostrazione


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

dimostrazione


Approccio alternativo con le stesse dimensioni:

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

dimostrazione

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}

dimostrazione


tcl, 297 byte (tentativo 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}

dimostrazione


1
Cosa intendi con "tentativo ingenuo"? Non dovresti mettere la lunghezza nel titolo invece?

1
Voglio dire, c'è più spazio per giocare a golf, perché c'è ancora molta ripetizione. E lo golfò di più.
sergiol

L'approccio non elaborato ha un'estensione di 254 byte.
sergiol,


@ Solo ASCII: grazie. Il mio non è esattamente uguale al tuo suggerimento! ;)
sergiol

1

Poetico , 899 byte

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

Provalo online!

Poetic è un esolang che ho realizzato nel 2018 per un progetto di classe. Fondamentalmente è brainfuck con lunghezze di parole anziché simboli.

Questa poesia è ... deprimente. 😟


0

Python 2.7, 194 188 byte

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

È possibile eliminare 2 byte cambiando map(chrin map(ccome cè già stato definito comechr

0

Jq 1,5 , 180 byte

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)

allargato

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
 )

Provalo online!


0

Barre ( /// ), 324 byte

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

La prima azione (predefinita) in Barra è "stampa", quindi la stringa viene stampata. L' /e \deve essere evitato procedendo\ s.


È necessario aggiungere il conteggio dei byte e preferibilmente un collegamento a un interprete. Sembra piuttosto non golfato (non sono sicuro che sia meglio fare meglio in ///).
Stewie Griffin,

È un po 'uno scherzo mostrare le bellezze di ///, e le aggiungerò!
clabe45,

0

Java 8, 176 173 byte

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

Porta della risposta C # .NET di @Charlie , quindi assicurati di votarlo.
-3 byte grazie a @ceilingcat .

Provalo online.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.