Alfabeto diagonale


66

Dato nessun input, il tuo compito è generare quanto segue:

a
 b
  c
   d
    e
     f
      g
       h
        i
         j
          k
           l
            m
             n
              o
               p
                q
                 r
                  s
                   t
                    u
                     v
                      w
                       x
                        y
                         z

Non visivamente, il tuo compito è generare ogni lettera dell'alfabeto, con spazi prima che siano uguali alla sua posizione nell'alfabeto meno uno.

Se lo stampi, deve apparire come sopra. Sono ammessi spazi esterni estranei che non influiscono sull'aspetto, nonché una nuova riga finale. Puoi usare tutte le lettere minuscole o tutte le maiuscole.

Puoi anche restituirlo da una funzione come da regole normali, sia come stringa con newline, sia come elenco di stringhe.

Questo è , quindi vince la risposta più breve in byte!


Gli spazi devono essere veri e propri spazi ASCII o posso fornire un output simile a<VERTICAL-TAB>b<VERTICAL-TAB>c...? Che ne dici se ci sono anche alcuni personaggi backspace? Finché il risultato visivo è lo stesso?
Trauma digitale

@DigitalTrauma fintanto che sembra lo stesso, non mi interessa che tipo di spazio usi.
Stephen,

Posso usare le schede anziché gli spazi?

@ yamboy1 hmm, probabilmente no. La maggior parte delle schede sono impostate su un numero elevato di spazi: se la diagonale sembra avere 4spazi prima del b, non sembrerà molto diagonale. Se sembra che la pendenza sia ~ -1allora va bene.
Stephen,

non influisce sull'aspetto include avere uno spazio iniziale aggiuntivo o 2?
MildlyMilquetoast,

Risposte:


87

Carbone , 2 byte

↘β

Provalo online!

Come?

 β - the lowercase alphabet
↘  - direction

Esattamente il tipo di sfida per cui è stato originariamente progettato il carbone.


4
La lingua giusta :)
Stephen,

2
Questo mi ricorda che probabilmente dovrei lavorare ancora su Crayon ... Credo che ↘"abc ... xyz"qsarebbe il programma di lavoro più breve. ( Provalo online! ) ↘``26O;)qDovrebbe funzionare (inizia con un backtick; per ogni I in 0 ... 25, apri l'I implicito, incrementa il backtick e l'output), ma per qualche motivo genera un errore "stack vuoto". .
ETHproductions

2
2 byte ?! In quale codifica la FRECCIA SUD-EST è un singolo byte?
Wyck,

6
@Wyck Charcoal (nota: speculazione) utilizza una tabella codici personalizzata, che può essere compressa in istruzioni da 1 byte. Questo è legittimo per Code Golf. codegolf.meta.stackexchange.com/questions/9428/…
Draco18s

14
@StephenS, penso che intendi la lingua in basso a destra :)
Wossname il

18

C, 45 byte

f(i){for(i=0;++i<27;)printf("%*c\n",i,i+96);}

Grazie a @Dennis per aver salvato 5 byte!


9
Funziona sulla mia macchina ™
Destructible Lemon

Penso che dovresti inizializzare o ripristinare ia un certo punto. Almeno su TIO, f()funziona solo una volta .
Dennis,

@Dennis Ah, hai ragione. Risolto questo.
Maniglia della porta

f(i){for(i=0;++i<27;printf("%*c\n",i,i+96));}salva qualche byte.
Dennis,

3
f(i){for(i=96;i<122;)printf("%c\v",++i);}per 41 byte - assicurati di eseguirlo su un vero terminale (sì, questo è permesso )
NieDzejkob

13

05AB1E , 14 8 6 byte

-2 byte grazie a @Emigna

AvyNú»

Come funziona

A      # lowercase alphabet
 v     # for letter in alphabet
  y    # push letter
   N   # push index of letter
    ú  # Pad letter with index of letter spaces
     » # Join with stack on newline.

Provalo online!

Versione originale, 14 byte

26FNð×N65+ç«}»

È possibile salvare altri 2 byte con AvyNú».
Emigna,

@Emigna: grazie! Lo modificherò in.
Neil A.

ƶsembra così perfetto, ma non lo è :(.
Magic Octopus Urn l'

Λprobabilmente non era ancora disponibile al momento, ma 26A3Λsalva un byte.
Kevin Cruijssen,

1
@MagicOctopusUrn ₂A3Λsarebbe stato ancora più breve.
Kevin Cruijssen,

12

JavaScript (ES6), 60 59 byte

f=(n=10)=>n-36?" ".repeat(n-10)+n.toString(++n)+`
`+f(n):""

Una funzione ricorsiva che restituisce una stringa con una nuova riga finale.


1
Whoa, è così subdolo. Conversione di un numero nell'intervallo da 10 a 36 in un numero in una base strana. Non capisco ancora perché anche la base debba aumentare.
Steve Bennett,

2
@SteveBennett Corretto, ma n.toString(++n)+f(n)è un byte più corto di n.toString(36)+f(n+1).
ETHproductions

1
Potresti fare f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):""per il 55.
Arnauld l'

1
Salvare un byte con qualche ES8: "".padEnd(n-10)+n.toString(++n).
Shaggy,

1
@Arnauld, f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):ssembrerebbe ammissibile.
Shaggy,

12

Rubino , 28 byte

26.times{|a|puts" "*a<<97+a}

Provalo online!

Spiegazione:

L'operatore << su una stringa in Ruby fa il trucco, come spiegato nella Documentazione

  • str << intero → str

  • str << obj → str

Aggiungi: concatena l'oggetto specificato in str. Se l'oggetto è un numero intero, viene considerato un punto di codice e viene convertito in un carattere prima della concatenazione.


12

R, 38 37 36 byte

write(intToUtf8(diag(65:90),T),1,26)

(L'uso di writeè ispirato alla risposta di @ Giuseppe .)


3
Giuro che ci ho provato ma non sono riuscito a farlo funzionare! Molto bene. È possibile salvare 1 byte utilizzando 65:90, poiché è consentito il maiuscolo.
user2390246

@ user2390246 Grazie per averci segnalato!
Sven Hohenstein,

puoi usare 1piuttosto che ""raderti un altro byte.
Giuseppe,

@Giuseppe Grazie per avermelo fatto notare!
Sven Hohenstein,

11

Vim, 29 byte

:h<_↵↵↵y$ZZ25o <Esc>{qqpblD+q25@q

Provalo online!

↵ significa premere il tasto Invio

<Esc> significa premere il tasto Esc

Come funziona?

:h<_↵↵↵                             Open the help and navigate to the alphabet
       y$ZZ                         Copy the alphabet and close the help
           25o <Esc>                Abuse auto-indent and create a whitespace diagonal
                    gg              Go to the beginning of the file
                      qq            Record a macro
                        pb          Paste the alphabet and go to the first letter
                          lD        Go to the second letter and cut the rest of the alphabet
                            +       Go to the first non-blank character in the next line
                             q      Stop recording the macro
                              25@q  Run the macro for the remaining letters

Provalo online! Puoi usarlo per dimostrarlo (V è basato su Vim e per lo più compatibile all'indietro, tranne per impostazione predefinita autoindentiva su off). Inoltre, meno importante, ti sei perso la +spiegazione che mi ha lanciato per un secondo.
nmjcman101,

Grazie @ nmjcman101! Stavo cercando di trovare un modo per provare vim online e non l'ho mai saputo di V
jmriego l'

Puoi usare invece di <Esc>. Secondo me sembra un po 'meglio.
Wheat Wizard

Puoi salvare un byte se lo fai {invece digg
DJMcMayhem

Potresti usare 2↵ invece di ↵↵↵ e forse Y invece di y $
GB

11

Python 2 , 36 byte

n=65;exec"print'%*c'%(n,n);n+=1;"*26

Questo sfrutta lo spazio bianco estraneo che non influisce sulla regola di aspetto .

Provalo online!

Versione alternativa, 38 byte

n=1;exec"print'%*c'%(n,n+96);n+=1;"*26

Questo produce l'output esatto dalle specifiche della sfida.

Provalo online!


Come funziona %*canche?
Leaky Nun,

%*<identifier>accetta due argomenti: la lunghezza a cui rimediare e la cosa reale da sostituire. Alcune printfimplementazioni hanno funzionalità ancora più oscure, come quella che %1$<identifier>ho usato qui .
Dennis,


8

Pure Bash, 13

echo {a..z}^K^H

Qui ^Ke ^Hsono letterali caratteri di controllo ASCII di tabulazione verticale e backspace. Il xxddump di questo script è il seguente: utilizzare xxd -rper rigenerare lo script effettivo:

00000000: 6563 686f 207b 612e 2e7a 7d0b 08         echo {a..z}..
  • {a..z}è un'espansione standard di bash brace da produrre a b c ... z(spazio separato)
  • la ^Kscheda verticale fa cadere il cursore di una riga nella stessa posizione
  • il ^Hbackspace sposta il cursore indietro di uno per cancellare lo spazio del separatore

Provalo online . cole tacvengono utilizzati nel piè di pagina per renderlo correttamente visualizzato in una finestra del browser, ma ciò non è necessario in un normale terminale.


Se i suddetti caratteri di controllo non ortodossi nell'output sono troppo estesi per te, puoi farlo:

Bash + utility comuni, 24

echo {a..z}^K^H|col -x|tac

Qui ^Ke ^Hsono letterali caratteri di controllo ASCII di tabulazione verticale e backspace. Il xxddump di questo script è il seguente: utilizzare xxd -rper rigenerare lo script effettivo:

00000000: 6563 686f 207b 612e 2e7a 7d0b 087c 636f  echo {a..z}..|co
00000010: 6c20 2d78 7c74 6163                      l -x|tac

Provalo online . La scheda verticale e il backspace possono essere resi invisibili dal tuo browser, ma sono lì (invisibili su Chrome, visibili su Firefox).

  • col -x esegue nuovamente il rendering dell'input in modo tale che i caratteri di controllo divertenti vengano sostituiti con spazi e nuove righe per ottenere lo stesso risultato visivo
  • per qualche motivo colrestituisce le linee in ordine inverso. taclo corregge.

È molto bello :) (e grazie a meta e @Dennis per aver suggerito di ordinare le risposte su codegolf in base all'attività anziché al punteggio, avere risposte migliori invece delle (molto noiose) codegolf langages builtins : codegolf.meta.stackexchange. com / questions / 10127 /… )
Olivier Dulac,

Molti terminali vengono visualizzati ^Kcome cursore in alto, che è il comportamento che coldeve essere emulato qui.
Neil,

@Neil sì, questo ha senso: la colmanpage chiama un VT un "feed di linea inversa". xterm, gnome-terminal e OSX terminano tutti in una riga però ...
Digital Trauma

8

Brain-Flak , 124, 116 , 106 byte

((((()))))(((([][]){}){})[[]()]<>){(({})<(({})<({}<>({})({})<>)>)
{({}<(<>({})<>)>[()])}{}(<>[][]<>)>[()])}

Provalo online!

Spiegazione:

Questa risposta abusa dello Stack Height Nilad , ma in un modo nuovo che non avevo mai usato prima, di cui sono abbastanza orgoglioso. A parte questo, la risposta non è troppo intelligente.

Quindi, analizzando i caratteri usati in questa arte ASCII, ci sono davvero tre valori che vengono usati frequentemente:

  • 32 (spazio),

  • 64 (aggiungi 64 a N per ottenere l'ennesima lettera dell'alfabeto) e

  • 10 (newline)

Oltre a 26. (numero di loop) E questi numeri vengono inseriti in posizioni diverse, quindi non possiamo davvero riutilizzare i valori intermedi per ridurre i numeri grandi. E spingere tutto per questi numeri è un enorme 86 byte da solo:

10:
((()()()()()){})

26:
((((()()()){}){}()){})

32:
((((()()()()){}){}){})

64:
(((((()()()()){}){}){}){})

Questo è orribile. Quindi ecco come lo rendiamo più conveniente. L'approccio ovvio è quello di spingere 32a nello stack alternativo, il che fa 32diventare il nostro frammento: (<>({})<>)e il nostro 64frammento diventa (<>({})({})<>). Se uniamo la nostra push iniziale 32 con la nostra push iniziale 26 , possiamo risparmiare circa 8 byte. (il mio primo golf).

Ma qui è dove entra in gioco il trucco di cui sono davvero orgoglioso. Dato che non stiamo usando lo stack alternativo per nient'altro, potremmo anche giocare a golf anche sui 10. Per fare questo, inseriremo 4 numeri arbitrari nello stack proprio all'inizio del programma. Poiché spingiamo anche 32, questo aumenta il valore di []nilad, a 5, il che rende il nostro 10frammento molto più conveniente. E fortunatamente per noi, in realtà ci permette di giocare a golf anche con i frammenti da 32 e 26 !

#Push 32, 26
(((((()()()()){}){}){})<>[(()()()){}])

#Push 10
((()()()()()){})

diventa

#Push 32, 26 (-2 bytes)
(((((())))))((([][][]){}()())[[]]<>)

#Push 10 (-6 bytes)
(<>[][]<>)

Quindi, ecco una spiegazione dettagliata:

# Push 1 four times
((((()))))

# Push 32 to main stack (to reuse later)...
((([][][]){}()())

# And then 26 to the alternate stack
[[]()]<>)

#While true
{

    # Keep track of the current TOS
    (({})<

        # Push [TOS, TOS + 64] (To get uppercase characters)
        (({})<({}<>({})({})<>)>)

        # TOS times...
        {
            # Decrement the loop counter, while pushing a space underneath it
            ({}<(<>({})<>)>[()])

        # Endwhile, pop zeroed counter
        }{}

        # Push 10 (newline)
        (<>[][]<>)

    # Push TOS - 1 back one
    >[()])

# Endwhile
}

7

V , 15 13 11 byte

¬azòÙr klDj

Provalo online!

Spiegazione

¬az         ' Insert a-z
   ò        ' Recursively
    Ù       ' Duplicate current line down
     r      ' Replace the first character with a ' '
       kl   ' Move up a line and right
         D  ' Delete from here to the end
          j ' Move back down

7

Fogli Google, 67 65 byte

=ArrayFormula(IF(ROW(A1:Z)=COLUMN(A1:Z26),CHAR(96+ROW(A1:Z26)),))

= ArrayFormula (IF (ROW (A1: Z) = COLONNA (A1: Z26), CHAR (96 + ROW (A1: Z26)), ""))

Andando fuori dal chiarimento che farà qualsiasi spazio bianco, ho usato celle visibilmente vuote

Produzione

Fammi sapere se questo non conta, se ho frainteso il conteggio dei byte o se ho sbagliato un po 'di etichetta in quanto questo è il mio primo post qui.

Modifica: si scopre che posso salvare 2 byte tralasciando "" poiché i fogli di Google accetteranno un valore if vuoto.


1
Benvenuti in PPCG :) Sembra buono! Ottimo lavoro battendo la risposta degli altri Fogli Google!
Stephen,

7

APL (Dyalog) , 9 7 byte SBCS

-2 byte grazie al suggerimento di ngn.

↑⍨∘-⌸⎕A

[Provalo online!] [TIO-j3o0ipjy]

⎕A l' alfabeto A maiuscolo

 tra ciascuna coppia (elemento, elenco di indici), inserire la seguente funzione tacita:

↑⍨ dall'elemento (la lettera) prendi ...

 il…

- numero di caratteri a indice negato, ovvero che molti caratteri da dietro, imbottitura sul davanti con spazi.

Provalo online!


Bello. Il mio tentativo di J è stato un po 'più dettagliato. Esiste una traduzione di questi verbi in J?
Giona

@Jonah Verbs: è {.ed è i.Avverbi: ¨è "0ed è ~.
Adám,

Grazie. Sembra che la traduzione J perda una certa brevità:(a.{~97+i.26){."0~-1+i.26
Giona

@ Adám l'output non sembra come richiesto; suggerimento: utilizzare per generare una matrice corretta e salvare 2 byte
ngn

@ngn Puoi anche restituire (...) un elenco di stringhe. Ma indagherò. Modifica: Oh sì, certo!
Adám,

6

Ottava, 25 19 o 12? byte

[diag(65:90)+32 '']

Provalo online!

Altra soluzione proposta da @LuisMendo (12 byte) che l'ho testata nella versione Windows di Octave:

diag('a':'z')

Spiegazione:

Genera matrice diagonale di a:z.


@LuisMendo In tio non riesco a produrre lo stesso risultato. È un'espressione, che può essere valutata, che produce il risultato desiderato :)
rahnema1

La soluzione proposta da Luis sembra funzionare su TIO ora ... Forse una nuova versione di Octave?
Stewie Griffin,

O nuova versione di tio !?
rahnema1,

6

Java 8, 72 71 70 61 byte

o->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}

-1 byte emettendo l'alfabeto maiuscolo invece che minuscolo.
-1 byte stampando direttamente, invece di restituire una stringa multilinea.
-8 byte grazie a @ OliverGrégoire usando printfdirettamente per sbarazzarsi di String s="";. E anche -1 byte cambiando ()->in o->.

Provalo qui.


L'implementazione ingenua è più breve di quanto avrei pensato. Puoi salvare un byte con c=65(o 64effettivamente) in modo da non aver bisogno del numero di 3 cifre. La restituzione di un array anziché della stringa può farti risparmiare byte in quanto è possibile rimuovere +"\n"?
TheLethalCoder

@TheLethalCoder Ah, non sapevo che ci fosse permesso di scrivere l'alfabeto maiuscolo. Scremato su quello. Grazie. E cosa intendi per emissione di un array? Come una matrice di array?
Kevin Cruijssen l'

1
@TheLethalCoder Qualsiasi suggerimento è il benvenuto, quindi grazie. Ma in questo caso non sarà più breve. :)
Kevin Cruijssen l'

1
@Inverno Sul tuo primo suggerimento, questo è ancora in discussione in questo meta-post , ma a giudicare dai voti immagino che sia davvero permesso da ora in poi. Per quanto riguarda il secondo, non ne sono sicuro. Sembra un po 'come imbrogliare / piegare le regole, soprattutto dopo queste discussioni accese nei commenti di questo meta post e risposte .
Kevin Cruijssen,

1
62 byte: ()->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}usando la stessa idea di un'altra sfida .
Olivier Grégoire,

5

Gelatina ,  10  9 byte

-1 byte grazie a Dennis (evitare il decremento Jusando un intervallo abbassato 26Ḷ, direttamente)

26Ḷ⁶ẋżØaY

Un programma completo che stampa il risultato.

Provalo online!

( ØaJ’⁶ẋżper 7 è un collegamento monadico che restituisce un elenco di elenchi di elenchi di caratteri, ma è simile al [["a"],[" ","b"],[" ","c"],...]quale è probabilmente inaccettabile.)

Tuttavia, non sarei sorpreso se ci fosse un modo più breve a cui non ho pensato!

Come?

26Ḷ⁶ẋżØaY - Main link: no arguments
26        - literal 26
  Ḷ       - lowered range = [0,1,2,...,26]
   ⁶      - literal space character
    ẋ     - repeat          [ [],      [' '],      [' ',' '],    ...,  [' ',' ',...,' ']]
      Øa  - yield lowercase alphabet
     ż    - zip             [[[],'a'],[[' '],'b'],[[' ',' '],'c'],...,[[' ',' ',...,' '],'z']]
        Y - join with newlines  [[],'a','\n',[' '],'b',\n',[' ',' '],'c','\n',...,'\n',[' ',' ',...,' '],'z']
          - implicit print (smashes the above together, printing the desired output)

Lo consentirei anche [["a"],[" ","b"],[" "," ","c"],...]poiché un elenco di caratteri è una definizione alternativa per una stringa, ma una tupla non sembra adattarsi :)
Stephen

Sì, è quello che ho pensato.
Jonathan Allan,

1
... nota che in ciascuno di sopra "..."c'è un elenco di caratteri, quindi è davvero [[['a']],[[[' '],['b']],[[' ',' '],['c']],...]dal momento che Jelly non ha stringhe, solo elenchi.
Jonathan Allan,

26Ḷ⁶ẋżØaYsalva un byte.
Dennis,

ØaJ’⁶ẋżper 7, per la tua versione alternativa.
Leaky Nun,


5

Alice , 22 20 byte

52E&waq'a+q&' d&o]k@

Provalo online!

Anche se l'output è una stringa, risulta che la modalità ordinale non è la strada da percorrere per questa sfida.

Spiegazione

52E&w             k@     do 26 times
     a                   push 10 (LF)
      q                  push current tape position (initially zero)
       'a+               add the ASCII code for "a"
          q&'            push 32 (space) a number of times equal to tape position
              d&o        output entire stack
                 ]       move tape position one space to the right

Soluzione precedente

["za/?rO&
' !]\"ohkw@/

Provalo online!

Ho esaminato una decina di soluzioni a 23 byte prima di riuscire a trovare questa.

Spiegazione

Questo programma utilizza il nastro per tenere traccia del numero di spazi da emettere. Le modalità cardinale e ordinale usano lo stesso nastro, ma hanno testine separate. Le due modalità hanno interpretazioni diverse di ciò che vedono sul nastro e il programma sfrutta appieno tale differenza.

I comandi vengono eseguiti nel seguente ordine:

[                   move cardinal tape position left
 "za"               push this string (as a string, since the final " is in ordinal mode)
     r              interpolate to entire range (i.e., the lowercase alphabet backward)
      h             split first character from string
       &            for each character in string: push that character and...
        w                                         push current address onto return address stack
         ' !        (cardinal mode) place 32 (space) at current cardinal tape position
            ]       (cardinal mode) move cardinal tape position right
             ?      (back to ordinal mode) read string from tape starting at ordinal tape position
                    this string will consist of n-1 spaces.
              o     output string of spaces
               O    output top of stack (current letter) followed by newline
                k   return to pushed return address. 
                    after 26 times through this loop, the return address stack will be empty and this is a no-op.
                 @  terminate

5

Brainfuck, 103 byte

>-<-----[[<+>->>+++>-<<<]>++]<<<<<<<<<[-]>>>-[<[-]<[-]<[>+>+<<-]>>[<<+>>-]<[>>>>.<<<<-]<+>>>>.+>>.<<<-]

Provalo online!

La posizione delle variabili è in qualche modo migliorabile.

Spiegazione

>-<-----[[<+>->>+++>-<<<]>++]   Initializes the tape.
<<<<<<<<<[-]>[-]>>-             Resets variables that
                                need to be at 0.
[                               For loop (25 to 0).
 <[-]<<[>+>+<<-]>>[<<+>>-]      Copy the spaces count in
                                order to use it in a loop.
 <[>>>>.<<<<-]                  Prints the spaces.
                                Prints the character followed
 <+>>>>.+>>.<<<-                by a new line. Also decrements
                                the main loop counter.
]

5

Fogli Google, 69 byte

=ArrayFormula(JOIN("
",REPT(" ",ROW(A1:A26)-1)&CHAR(96+ROW(A1:A26))))

Niente di complicato qui. L'unico trucco è utilizzare ArrayFormulae ROW(A1:A26)restituire 26 valori diversi per la JOINfunzione. L'output è simile al seguente:

Produzione


Penso che Excel 2016 possa fare la stessa cosa con TEXTJOINma non posso inserire formule di array nella versione online e ho solo il 2013 da solo. La formula dovrebbe essere questa:

=TEXTJOIN("
",FALSE,REPT(" ",ROW(A1:A26)-1)&CHAR(96+ROW(A1:A26)))

Inserendolo come una formula di matrice ( Ctrl+ Shift+ Enter) si aggiungono parentesi graffe { }su entrambi i lati, portandolo a 67 byte. Chiunque possa verificarne il corretto funzionamento può utilizzarlo come propria risposta.


5

Seme , 6014 byte

Non credo che questo vincerà alcun premio, ma solo per divertimento, ecco una soluzione in Seed.

86 11103250503694729158762257823050815521568836599011209889044745493166180250197633623839266491438081837290079379263402288506775397211362446108152606095635373134468715450376738199004596861532212810083090232034321755895588102701453625219810339758989366211308223221344886043229936009486687653111291562495367476364760255760906228050130847228170228716790260998430434027546345063918859356161024202180254514539438087787769611000320430464740566450402368450792375043801526494811596087812709169139468697779440918934518195843690439213251884693846598754642076364755341359062651237754916053099089619667382845958005035392458577634784453744876558142057256976895330859887974064083588368087014591508237946214519271550243549214199679364098489146944338807874570414584343165070707969101892779772740177526390597395955859236589308394889243501541206981604661264930842784772121710695027991351718061777696274815931123342985242351444203296855501870888626347939456384376808446806093364176576945969539054970975848477876079897476093353730443488664472826635815956526890935049081522728044807877072639829234224838977148057506785320443165975265560224605597481381188291535996775480326796788286452216432605854564432262547835415260058472165825285438444435690700488258778785613363062417500848996527077259315494936037544655054620369560227407957368700650031346856230643646273909094915618471799926504192999361174763592054723307855670381682927214117502862645460031555724588536036895597768493827964819026940533784490457441244859937078155137620826821294513857153097135094397278852300032685608169642137925241118197368192392427097109982751185030229544527638686131131545529690698706313745703838144933923021851042677941879847025167921010148923860660695145106913052517930707522151230705792709484338746351589089180137363986003757314611932324492978098101655359729841878862276799317010824753645947659706175083519817734448003718088115457982394423932136760435046136644679525408371158980833993157988971884061469882136904103033944270884697456159261033500286722891139158500027351042265757431184139617566089023339480051231776345929815102059539844917563709940188668873305602146506284075271989710388430531233185164106985265575418252638186398535149202928422854319253947591044830747981534342833040219194969504971457701296402664807369043224201667623773161453335066484102800249947322601702575025462427139266561015140950621152993027466758026351218924607290766894274223554418125824416921899080393405328694235821466034161071834073874727856768719898425047229002772806527172294625623026601313091815217479540688812203850300478145319935479599086534606210099372526810614742385909275512758349679098012967475393301857434507012875239092688018536028125644341148882858752275129016876257290205949225918496182271679312996010157634568807332616541938310641844258434083838017690572891417189135014450484203635258935943095637185443145042430274553211816422809756194554145177421779800554334935224073734034988935790096239926730047370699006392111034056662661567902477446646680125183082979598538506383502737734442490068661537425714549752783861222862366340979663873475326752237893690641570287341027097775099918958849864419430754493042534812120486345363285167685811903366691676146427476942948696624274431993989133835880516551024369474029197791751838810883302415448112237526350703063618171739262753474029252659418383385834751808940073804107171146665382663467460066719556797639176747423279761528061219482681051780434845070421974558638870988408449698678976622755518024906714421419806347234183574860655249471877105716127767795785164699804819127058322715857697491583787449703283625085118896433923054087238479453964363805045497229148813441732912067120594705269402106426011497763749556561398150139686331615167139081591537739333533146667211063179804707883556569241294269430626179579760506971066676011512530066694518309930078451295032445835025178124213221937594928472509588116557231122849491576207720183829735710200290762251904109318007206980645946249679357907549498615310165588678201768095297568708803842208357473777731751349499510116345704811971207818719582793964185192140178454948686109674659005978400204479072321714207828018696339659886683414074211823497880135255138161141724546221354224299071581607979907417508104234534779573666933024250229754952685174194168516481670999039048675109878524061868078078216337487277443941946961426121900907734301692962783139932352047932263834773963592317279425421954035566305805348109175553209815893678595198155962166838761859540063188209014774346841267440789072833797121217961797443744676162541668802226500817146368372390178287945076657776275930590173768326046610094573983886099504933977126798348879838826160714899283593774855907724617352862079916515034033299006419237012240730789008999523238851913897908225482003661109026061857228300111070725651744312468140016983078297938157227595743419983763920290850801438187869169473456288283458163865462359588316419331445070232596307970490434468929587726795603069137946085898481642595124580643542063564880389350236902538522311931690905858973696558714577085714396738993556273941292496636824719451697631982422926675238248502170501569627556395875619564600587531422890212003952929325067813498958390095519100963598626450443103780781917045489137526377521695121594716424797216910752252094749957224424042047863869830458287114846161217532552045343745235776511344577755412402833175338541217548987687334493461236111032661075185714361252784989689657180878190058132112701323898697673356854132286586129946906160482715702618768869398700713988301485421822519104930442450343377920756456344715552821899659777521739288202633751258303637433110490141551780764889912485271829265224821750882760152112536985349681370761157202793523201156381835717321637420939424473215237574260806475544972321933149796156065126465186203580256364372579422208318560608817806013462242728082475787319168695978160861791054731154820533251279706873332364894538291172324730671914083193733203570060223897442373172904974570329139578763294810924815364789498523721281918680145538278976651264

Si traduce nel seguente programma Befunge:

vaa{       @>
v#      g02<v
>30g20g`   |
10g-:!v!: < >#<
v,:g02_40g,1- ^
>1+20p$91+, v


4

Aggiungi ++ , 1069 byte

+97
&
-87
&
+22
&
+66
&
-88
&
+22
&
&
+67
&
-89
&
+22
&
&
&
+68
&
-90
&
+22
&
&
&
&
+69
&
-91
&
+22
&
&
&
&
&
+70
&
-92
&
+22
&
&
&
&
&
&
+71
&
-93
&
+22
&
&
&
&
&
&
&
+72
&
-94
&
+22
&
&
&
&
&
&
&
&
+73
&
-95
&
+22
&
&
&
&
&
&
&
&
&
+74
&
-96
&
+22
&
&
&
&
&
&
&
&
&
&
+75
&
-97
&
+22
&
&
&
&
&
&
&
&
&
&
&
+76
&
-98
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
+77
&
-99
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
+78
&
-100
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+79
&
-101
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+80
&
-102
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+81
&
-103
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+82
&
-104
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+83
&
-105
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+84
&
-106
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+85
&
-107
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+86
&
-108
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+87
&
-109
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+88
&
-110
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+89
&
-111
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+90
&
P

Provalo online!

Sì. Questo è hardcoded. Sono sicuro che c'è un modo migliore, e se vuoi trovarlo, vai avanti, ma in questo modo sembra funzionare meglio poiché Add ++ è difficile da lavorare con la memoria.


4

R , 59 49 47 byte

-10 byte grazie a djhurio

-2 byte grazie a Sven Hohenstein

write("diag<-"(matrix("",26,26),letters),"",26)

Stampa su stdout. Superato dall'utente2390246

Provalo online!


È possibile sostituire 26^2con 676per salvare un byte.
Maniglia della porta

2
m=matrix("",26,26);diag(m)=letters;write(m,'',26)(49 byte)
djhurio

Per lo stesso numero di byte, è possibile stampare la matrice utilizzandocat(m,fill=27)
JAD

1
@djhurio "Per lo stesso numero di byte"
JAD

1
@Giuseppe Il comando "diag<-"(x, y)è simile a diag(x) <- y. Il valore non è assegnato a una variabile ma restituito.
Sven Hohenstein,

4

> <> , 46 44 42 byte

"A"0::?!v" "o1-40.
*(?!;30.>~$:oao1+$1+:d2

Provalo online!

Spiegazione

Line 1:
"a"0::?!v" "o1-40.
"a"0                       :Initialize the stack items (print char and space count)
    ::?!v                  :Duplicate the space count, check if 0, go down if 0
         " "o1-            :Print a space then take 1 from the space count
               40.         :Jump to codepoint row 0 col 4 (this restarts the loop)
Line 2:
*(?!;30.>~$:oao1+$1+:d2
        >~                 :Remove the zeroed space counter off the stack
          $:oao1+          :Place our print char on the top of the stack, duplicate and print it, print a new line, increase it by 1; a->b->c etc
                 $1+       :Place our space count on the top of the stack and increase it by 1
*                   :d2    :Duplicate the space counter, add 26 to the stack
 (?!;                      :Add 0 to the stack, less than compare 0, if the counter is above 0 it terminates
     30.                   :Jump to the first line, (back to printing spaces)

Questo è un approccio completamente diverso dai miei precedenti 46 byte, quindi ho incluso il TIO anche a quello solo. 46 byte Provalo online!

Di seguito è riportato un link alle osservazioni di Emigna, è stata la prima> <> risposta, ma credo che la mia sia abbastanza diversa (e risparmia qualche byte) da giustificarne una seconda.

La risposta di Emigna


E ora siamo legati. Meglio se si
gioca

@Emigna, pensavo che sarebbero bastati 3 byte salvati: o suppongo di avere ancora del lavoro da fare :)
Pellicano

4

Haskell , 66 65 58 57 45 43 byte

Grazie a @nimi e @maple_shaft per aver salvato 12 14 byte.

unlines[(' '<$['b'..n])++[n]|n<-['a'..'z']]

Provalo online!


1
<$(' '<$[1..(fromEnum n-97)])
Otterresti

2
Puoi modificare il suggerimento di @ maple_shaft in (' '<$['b'..n]).
nimi,

Poiché sono consentite funzioni senza nome, non è necessario per f=.
nimi,

2
Btw, conteggio stesso byte: ['a'..'z']>>= \n->(' '<$['b'..n])++[n,'\n'].
nimi,

4

PHP, 23 byte

Nota: utilizza la codifica IBM-850.

<?=join(~¶,range(a,z));

Esegui in questo modo:

echo '<?=join(~¶,range(a,z));' | php -n;echo
# With default (utf8) terminal:
echo '<?=join("\v",range(a,z));' | php -n;echo

Spiegazione

Crea un array di tutti i caratteri dell'alfabeto, uniscilo con una scheda verticale come colla.


4

Brainfuck , 80 byte

++++++++[>+>++++>++++++++>+++<<<<-]>++>>+>++[->[<<<.>>>->+<]>+[-<+>]<<<.+<<.>>>]

Provalo online!

formattato:

++++++++[>+>++++
>++++++++>+++<<<
<-]>++>>+>++[->[
<<<.>>>->+<]>+[-
<+>]<<<.+<<.>>>]

Utilizza una semplice funzione di generazione moltiplicativa per mettere in memoria alcune costanti, quindi ripete il processo di stampa di N spazi 'A' + Nper N = 0..25.

commentata:

INITIALIZE TAPE: 10 32 65 >26< 0 0
C_NEWLINE: 10
C_SPACE: 32
V_ALPHA: 65
V_COUNTER: 26
V_PREFIX: 0
V_PREFIX_TEMP: 0
++++++++[>+>++++>++++++++>+++<<<<-]>++>>+>++

WHILE V_COUNTER != 0  [-
   "PRINT C_SPACE REPEATED V_PREFIX TIMES"
   "V_PREFIX_TEMP = V_PREFIX"
     V_PREFIX TIMES  >[-
       PRINT C_SPACE <<<.>>>
       INCREMENT V_PREFIX_TEMP >+<
     ]
   "V_PREFIX = V_PREFIX_TEMP PLUS 1"
     V_PREFIX_TEMP PLUS 1 TIMES  >+[-
       INCREMENT V_PREFIX <+>
     ]
   PRINT C_ALPHA <<<.
   INCREMENT C_ALPHA +
   PRINT C_NEWLINE <<.
>>>]

4

RProgN 2 , 5 byte

aS`\x0B.

\ x0B è una scheda verticale letterale

Questo prende solo l'alfabeto minuscolo, lo divide e lo unisce con le schede verticali. Ciò produce l'effetto desiderato su alcuni terminali Bash.

Esecuzione dello script

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.