Alfabeto Diagonal


66

Sin ninguna entrada, su tarea es generar lo siguiente:

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

No visualmente, su tarea es generar cada letra en el alfabeto, con espacios antes de que sea igual a su posición en el alfabeto menos uno.

Si imprime esto, debe aparecer como el anterior. Se permite un espacio en blanco extraño que no afecta la apariencia, así como una nueva línea final. Puede usar todas las minúsculas o todas las mayúsculas.

También puede devolver esto desde una función según las reglas habituales, ya sea como una cadena con nuevas líneas o como una lista de cadenas.

Este es el , ¡así que la respuesta más corta en bytes gana!


¿Los espacios deben ser espacios ASCII reales, o puedo dar un resultado como a<VERTICAL-TAB>b<VERTICAL-TAB>c...? ¿Qué tal si también hay algunos caracteres de retroceso allí? ¿Mientras el resultado visual sea el mismo?
Trauma digital

@DigitalTrauma siempre que parezca lo mismo, no me importa qué tipo de espacio en blanco use.
Stephen

¿Puedo usar pestañas en lugar de espacios?

@ yamboy1 hmm, probablemente no. La mayoría de las pestañas están configuradas en una gran cantidad de espacios: si su diagonal parece tener 4espacios antes del b, no se verá muy diagonal. Si parece que la pendiente es ~ -1entonces está bien.
Stephen

¿no afecta la apariencia incluir tener un espacio inicial adicional o 2?
MildlyMilquetoast

Respuestas:


87

Carbón , 2 bytes

↘β

Pruébalo en línea!

¿Cómo?

 β - the lowercase alphabet
↘  - direction

Exactamente el tipo de desafío para el que se diseñó originalmente el carbón.


44
El lenguaje correcto :)
Stephen

2
Esto me recuerda que probablemente debería trabajar en Crayon un poco más ... Creo ↘"abc ... xyz"qque sería el programa de trabajo más corto. (¡ Pruébelo en línea! ) ↘``26O;)qDebería funcionar (comience con una marca de retroceso; para cada I en 0 ... 25, haga estallar la I implícita, incremente la marca de retroceso y la salida), pero arroja un error de "pila vacía" por alguna razón. .
ETHproductions

2
¿2 bytes? ¿En qué codificación es la FLECHA SUROESTE un solo byte?
Wyck

66
@Wyck Charcoal (nota: especulación) usa una página de códigos personalizada, que se puede comprimir en instrucciones de 1 byte. Eso es legítimo para Code Golf. codegolf.meta.stackexchange.com/questions/9428/…
Draco18s

14
@StephenS, creo que te refieres al lenguaje inferior derecho :)
Wossname

18

C, 45 bytes

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

¡Gracias a @Dennis por guardar 5 bytes!


99
Works on my machine ™
Destructible Lemon

Creo que tendrías que inicializar o restablecer ien algún momento. Al menos en TIO, f()solo funciona una vez .
Dennis

@ Dennis Ah, tienes razón. Arreglado eso.
Pomo de la puerta

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

3
f(i){for(i=96;i<122;)printf("%c\v",++i);}para 41 bytes - asegúrese de ejecutar esto en un terminal real (sí, esto está permitido )
NieDzejkob

13

05AB1E , 14 8 6 bytes

-2 bytes gracias a @Emigna

AvyNú»

Cómo funciona

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.

Pruébalo en línea!

Versión original, 14 bytes.

26FNð×N65+ç«}»

Puede guardar otros 2 bytes con AvyNú».
Emigna

@Emigna: ¡Gracias! Lo editaré en.
Neil A.

ƶparece tan perfecto, pero no es :(.
Magic Octopus Urn

Λprobablemente aún no estaba disponible en ese momento, pero 26A3Λguarda un byte.
Kevin Cruijssen

1
@MagicOctopusUrn ₂A3Λhabría sido aún más corto.
Kevin Cruijssen

12

JavaScript (ES6), 60 59 bytes

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

Una función recursiva que devuelve una cadena con una nueva línea final.


1
Whoa, eso es tan astuto. Convertir un número en el rango de 10 a 36 a un número en una base extraña. Sin embargo, no entiendo por qué la base también tiene que aumentar.
Steve Bennett

2
@SteveBennett Correcto, pero n.toString(++n)+f(n)es un byte más corto que n.toString(36)+f(n+1).
ETHproductions

1
Podrías hacerlo f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):""por 55.
Arnauld

1
Guardar un byte con algunos ES8: "".padEnd(n-10)+n.toString(++n).
Shaggy

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

12

Rubí , 28 bytes.

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

Pruébalo en línea!

Explicación:

El operador << en una cadena en Ruby hace el truco, como se explica en la Documentación

  • str << entero → str

  • str << obj → str

Agregar: concatena el objeto dado a str. Si el objeto es un entero, se considera como un punto de código y se convierte en un carácter antes de la concatenación.



11

Vim, 29 bytes

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

Pruébalo en línea!

↵ significa presionar la tecla de retorno

<Esc> significa presionar la tecla de escape

¿Como funciona esto?

: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

Pruébalo en línea! Puede usar esto para demostrarlo (V se basa en Vim y es en su mayoría compatible con versiones anteriores, excepto que aparentemente el autoindent está predeterminado en apagado). Además, menos importante, te perdiste la +explicación que me arrojó por un segundo.
nmjcman101

Gracias @ nmjcman101! Estaba tratando de encontrar alguna forma de probar vim en línea y nunca supe eso sobre V
jmriego

Puedes usar en lugar de <Esc>. Se ve un poco mejor en mi opinión.
Wheat Wizard

Puede guardar un byte si lo hace en {lugar degg
DJMcMayhem

Puede usar 2↵ en lugar de ↵↵↵ y quizás Y en lugar de y $
GB

11

Python 2 , 36 bytes

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

Esto aprovecha el espacio en blanco extraño que no afecta a la regla de apariencia .

Pruébalo en línea!

Versión alternativa, 38 bytes.

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

Esto produce el resultado exacto de la especificación de desafío.

Pruébalo en línea!


¿Cómo funciona %*cincluso?
Leaky Nun

%*<identifier>toma dos argumentos: la longitud para rellenarlo y la cosa real para sustituir. Algunas printfimplementaciones tienen características aún más oscuras, como la %1$<identifier>que usé aquí .
Dennis


8

Pure Bash, 13

echo {a..z}^K^H

Aquí ^Ky ^Hson caracteres de control ASCII de tabulación vertical literal y retroceso. El xxdvolcado de este script es el siguiente: úselo xxd -rpara regenerar el script real:

00000000: 6563 686f 207b 612e 2e7a 7d0b 08         echo {a..z}..
  • {a..z}es una expansión estándar de llaves para producir a b c ... z(separadas por espacios)
  • la ^Kpestaña vertical baja el cursor una línea hacia la misma posición
  • el ^Hretroceso mueve el cursor hacia atrás para borrar el espacio del separador

Pruébalo en línea . coly tacse usan en el pie de página para que esto se represente correctamente en una ventana del navegador, pero esto es innecesario en un terminal normal.


Si los caracteres de control poco ortodoxos anteriores en la salida son demasiado extensos para usted, entonces puede hacer esto:

Bash + utilidades comunes, 24

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

Aquí ^Ky ^Hson caracteres de control ASCII de tabulación vertical literal y retroceso. El xxdvolcado de este script es el siguiente: úselo xxd -rpara regenerar el script real:

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

Pruébalo en línea . La pestaña vertical y el espacio de retroceso pueden volverse invisibles por su navegador, pero están allí (invisibles en Chrome, visibles en Firefox).

  • col -x vuelve a representar la entrada de modo que los divertidos caracteres de control se reemplacen con espacios y líneas nuevas para obtener el mismo resultado visual
  • por alguna razón, colgenera líneas en orden inverso. taccorrige eso.

Eso es muy bueno :) (y gracias a meta y @Dennis por sugerir ordenar las respuestas en codegolf por actividad en lugar de puntaje, para obtener mejores respuestas en lugar de las (muy aburridas) lenguas de codegolf integradas: codegolf.meta.stackexchange. com / preguntas / 10127 / ... )
Olivier Dulac

Muchos terminales se representan ^Kcomo cursor hacia arriba, que es el comportamiento que coldebe emularse aquí.
Neil

@Neil sí, eso tiene sentido: la página de colmanual llama a un VT un "avance de línea inversa". xterm, gnome-terminal y OSX terminal todos despliegan una línea aunque ...
Digital Trauma

8

Brain-Flak , 124, 116 , 106 bytes

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

Pruébalo en línea!

Explicación:

Esta respuesta abusa del Stack Height Nilad , pero de una manera nueva que nunca he usado antes, de lo que estoy muy orgulloso. Aparte de eso, la respuesta no es demasiado inteligente.

Analizando los caracteres utilizados en este arte ASCII, en realidad hay tres valores que se utilizan con frecuencia:

  • 32 (espacio),

  • 64 (agregue 64 a N para obtener la enésima letra del alfabeto), y

  • 10 (nueva línea)

Además de 26. (número de bucles) Y estos números se introducen en diferentes ubicaciones, por lo que realmente no podemos reutilizar los valores intermedios para hacer que los números grandes sean más pequeños. Y presionar todos estos números es solo la friolera de 86 bytes:

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

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

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

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

Esto es horrible Así es como lo hacemos más conveniente. El enfoque obvio es empujar un 32a la pila alternativa, lo que hace que nuestro 32fragmento se convierta: (<>({})<>)y nuestro 64fragmento se convierta (<>({})({})<>). Si combinamos nuestro empuje inicial 32 con nuestro empuje inicial 26 , podemos ahorrar aproximadamente 8 bytes. (mi primer golf)

Pero aquí es donde entra el truco del que estoy realmente orgulloso. Dado que no estamos usando la pila alternativa para otra cosa, también podríamos jugar golf en el 10 también. Para hacer esto, empujaremos 4 números arbitrarios en la pila justo al comienzo del programa. Como también presionamos 32, esto aumenta el valor de la []nilad, a 5, lo que hace que nuestro 10fragmento sea mucho más conveniente. Y, por suerte para nosotros, ¡también nos permite jugar a los fragmentos 32 y 26 !

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

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

Se convierte

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

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

Así que aquí hay una explicación detallada:

# 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 bytes

¬azòÙr klDj

Pruébalo en línea!

Explicación

¬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

Hojas de cálculo de Google, 67 65 bytes

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

= Fórmula de matriz (IF (ROW (A1: Z) = COLUMN (A1: Z26), CHAR (96 + ROW (A1: Z26)), ""))

Saliendo de la aclaración de que cualquier espacio en blanco servirá, he usado celdas visiblemente vacías

Salida

Avíseme si esto no cuenta, si he entendido mal el recuento de bytes o si he jodido algo de etiqueta, ya que esta es mi primera publicación aquí.

Editar: Resulta que puedo guardar 2 bytes al omitir el "" ya que las hojas de Google aceptarán un valor vacío si.


1
Bienvenido a PPCG :) ¡Se ve bien! ¡Buen trabajo superando a las otras respuestas de Google Sheets!
Stephen

7

APL (Dyalog) , 9 7 bytes SBCS

-2 bytes gracias a la pista de ngn.

↑⍨∘-⌸⎕A

[¡Pruébalo en línea!] [TIO-j3o0ipjy]

⎕A el alfabeto mayúscula A

 entre cada par (elemento, lista de índices), inserte la siguiente función tácita:

↑⍨ del elemento (la letra) tome ...

 el…

- número de caracteres de índice negado, es decir, muchos caracteres de la parte posterior, relleno en el frente con espacios.

Pruébalo en línea!


Agradable. Mi intento de J fue bastante más detallado. ¿Hay una traducción de estos verbos a J?
Jonás

@Jonah Verbs: es {.y es i.Adverbios: ¨es "0y es ~.
Adám

Gracias. Parece que la traducción J pierde algo de brevedad:(a.{~97+i.26){."0~-1+i.26
Jonás

@ Adám la salida no se ve como se requiere; sugerencia: utilice para generar una matriz adecuada y ahorre 2 bytes
ngn

@ngn También puede devolver (...) una lista de cadenas. Pero lo investigaré. Editar: ¡Oh sí, por supuesto!
Adám

6

Octava, 25 19 o 12? bytes

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

Pruébalo en línea!

Otra solución propuesta por @LuisMendo (12 bytes) que lo probé en la versión de Windows de Octave:

diag('a':'z')

Explicación:

Genera matriz diagonal de a:z.


@LuisMendo En tio no puedo producir el mismo resultado. Es una expresión, que se puede evaluar, que produce el resultado deseado :)
rahnema1

La solución propuesta por Luis parece funcionar en TIO ahora ... ¿Nueva versión de Octave quizás?
Stewie Griffin

¿O una nueva versión de tio?
rahnema1

6

Java 8, 72 71 70 61 bytes

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

-1 byte generando el alfabeto en mayúsculas en lugar de minúsculas.
-1 byte imprimiendo directamente, en lugar de devolver una cadena multilínea.
-8 bytes gracias a @ OliverGrégoire utilizando printfdirectamente para deshacerse de él String s="";. Y también -1 byte cambiando ()->a o->.

Pruébalo aquí


La implementación ingenua es más corta de lo que hubiera pensado. Puede guardar un byte con c=65(o en 64realidad) para que no necesite el número de 3 dígitos. ¿Puede devolver una matriz en lugar de la cadena ahorrarle bytes ya que puede eliminar el +"\n"?
TheLethalCoder

@TheLethalCoder Ah, no sabía que se nos permitía generar el alfabeto en mayúsculas. Skimmed sobre eso. Gracias. ¿Y qué quieres decir con generar una matriz? ¿Como una serie de matrices?
Kevin Cruijssen

1
@TheLethalCoder Cualquier sugerencia es bienvenida, así que gracias. Pero en este caso no será más corto. :)
Kevin Cruijssen

1
@Invierno Sobre su primera sugerencia, todavía se está discutiendo en esta meta-publicación , pero a juzgar por los votos, supongo que de hecho está permitido de ahora en adelante. En cuanto al segundo, no estoy seguro. Se siente como hacer trampa / doblar las reglas, especialmente después de estas acaloradas discusiones en los comentarios de esta meta publicación y respuestas .
Kevin Cruijssen

1
62 bytes: ()->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}usando la misma idea que en otro desafío .
Olivier Grégoire

5

Jalea ,  10  9 bytes

-1 byte gracias a Dennis (evite disminuir Jutilizando un rango reducido 26Ḷ, directamente)

26Ḷ⁶ẋżØaY

Un programa completo que imprime el resultado.

Pruébalo en línea!

( ØaJ’⁶ẋżpara 7 es un enlace monádico que devuelve una lista de listas de listas de caracteres, pero [["a"],[" ","b"],[" ","c"],...]es probable que sea inaceptable).

Sin embargo, no me sorprendería si hubiera una forma más corta en la que no había pensado.

¿Cómo?

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)

Incluso permitiría, [["a"],[" ","b"],[" "," ","c"],...]ya que una lista de caracteres es una definición alternativa para una cadena, pero una tupla no parece encajar :)
Stephen

Sí, eso es lo que yo pensaba.
Jonathan Allan

1
... tenga en cuenta que en lo anterior cada uno "..."es una lista de caracteres, así que realmente es [[['a']],[[[' '],['b']],[[' ',' '],['c']],...]porque Jelly no tiene cadenas, solo listas.
Jonathan Allan

26Ḷ⁶ẋżØaYguarda un byte.
Dennis

ØaJ’⁶ẋżpara 7, para su versión alternativa.
Leaky Nun


5

Alice , 22 20 bytes

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

Pruébalo en línea!

Aunque la salida es una cadena, resulta que el modo ordinal no es el camino a seguir para este desafío.

Explicación

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

Solución previa

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

Pruébalo en línea!

Revisé unas diez soluciones de 23 bytes antes de poder encontrar esta.

Explicación

Este programa usa la cinta para rastrear el número de espacios a la salida. Los modos cardinal y ordinal usan la misma cinta, pero tienen cabezales de cinta separados. Los dos modos tienen diferentes interpretaciones de lo que ven en la cinta, y el programa aprovecha al máximo esa diferencia.

Los comandos se ejecutan en el siguiente orden:

[                   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 bytes

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

Pruébalo en línea!

La ubicación de las variables es de alguna manera mejorable.

Explicación

>-<-----[[<+>->>+++>-<<<]>++]   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

Hojas de cálculo de Google, 69 bytes

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

Nada complicado aquí. El único truco es usar ArrayFormulay ROW(A1:A26)devolver 26 valores diferentes para la JOINfunción. La salida se ve así:

Salida


Creo que Excel 2016 puede hacer lo mismo, TEXTJOINpero no puedo ingresar fórmulas de matriz en la versión en línea y solo tengo 2013 yo mismo. La fórmula debería ser esta:

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

Al ingresarlo como una fórmula de matriz ( Ctrl+ Shift+ Enter) se agregan llaves { }en ambos lados, llevándolo a 67 bytes. Cualquiera que pueda verificar que funciona es bienvenido a usarlo como su propia respuesta.


5

Semilla , 6014 bytes

No creo que esto gane ningún premio, pero solo por diversión, aquí hay una solución en Seed.

86 11103250503694729158762257823050815521568836599011209889044745493166180250197633623839266491438081837290079379263402288506775397211362446108152606095635373134468715450376738199004596861532212810083090232034321755895588102701453625219810339758989366211308223221344886043229936009486687653111291562495367476364760255760906228050130847228170228716790260998430434027546345063918859356161024202180254514539438087787769611000320430464740566450402368450792375043801526494811596087812709169139468697779440918934518195843690439213251884693846598754642076364755341359062651237754916053099089619667382845958005035392458577634784453744876558142057256976895330859887974064083588368087014591508237946214519271550243549214199679364098489146944338807874570414584343165070707969101892779772740177526390597395955859236589308394889243501541206981604661264930842784772121710695027991351718061777696274815931123342985242351444203296855501870888626347939456384376808446806093364176576945969539054970975848477876079897476093353730443488664472826635815956526890935049081522728044807877072639829234224838977148057506785320443165975265560224605597481381188291535996775480326796788286452216432605854564432262547835415260058472165825285438444435690700488258778785613363062417500848996527077259315494936037544655054620369560227407957368700650031346856230643646273909094915618471799926504192999361174763592054723307855670381682927214117502862645460031555724588536036895597768493827964819026940533784490457441244859937078155137620826821294513857153097135094397278852300032685608169642137925241118197368192392427097109982751185030229544527638686131131545529690698706313745703838144933923021851042677941879847025167921010148923860660695145106913052517930707522151230705792709484338746351589089180137363986003757314611932324492978098101655359729841878862276799317010824753645947659706175083519817734448003718088115457982394423932136760435046136644679525408371158980833993157988971884061469882136904103033944270884697456159261033500286722891139158500027351042265757431184139617566089023339480051231776345929815102059539844917563709940188668873305602146506284075271989710388430531233185164106985265575418252638186398535149202928422854319253947591044830747981534342833040219194969504971457701296402664807369043224201667623773161453335066484102800249947322601702575025462427139266561015140950621152993027466758026351218924607290766894274223554418125824416921899080393405328694235821466034161071834073874727856768719898425047229002772806527172294625623026601313091815217479540688812203850300478145319935479599086534606210099372526810614742385909275512758349679098012967475393301857434507012875239092688018536028125644341148882858752275129016876257290205949225918496182271679312996010157634568807332616541938310641844258434083838017690572891417189135014450484203635258935943095637185443145042430274553211816422809756194554145177421779800554334935224073734034988935790096239926730047370699006392111034056662661567902477446646680125183082979598538506383502737734442490068661537425714549752783861222862366340979663873475326752237893690641570287341027097775099918958849864419430754493042534812120486345363285167685811903366691676146427476942948696624274431993989133835880516551024369474029197791751838810883302415448112237526350703063618171739262753474029252659418383385834751808940073804107171146665382663467460066719556797639176747423279761528061219482681051780434845070421974558638870988408449698678976622755518024906714421419806347234183574860655249471877105716127767795785164699804819127058322715857697491583787449703283625085118896433923054087238479453964363805045497229148813441732912067120594705269402106426011497763749556561398150139686331615167139081591537739333533146667211063179804707883556569241294269430626179579760506971066676011512530066694518309930078451295032445835025178124213221937594928472509588116557231122849491576207720183829735710200290762251904109318007206980645946249679357907549498615310165588678201768095297568708803842208357473777731751349499510116345704811971207818719582793964185192140178454948686109674659005978400204479072321714207828018696339659886683414074211823497880135255138161141724546221354224299071581607979907417508104234534779573666933024250229754952685174194168516481670999039048675109878524061868078078216337487277443941946961426121900907734301692962783139932352047932263834773963592317279425421954035566305805348109175553209815893678595198155962166838761859540063188209014774346841267440789072833797121217961797443744676162541668802226500817146368372390178287945076657776275930590173768326046610094573983886099504933977126798348879838826160714899283593774855907724617352862079916515034033299006419237012240730789008999523238851913897908225482003661109026061857228300111070725651744312468140016983078297938157227595743419983763920290850801438187869169473456288283458163865462359588316419331445070232596307970490434468929587726795603069137946085898481642595124580643542063564880389350236902538522311931690905858973696558714577085714396738993556273941292496636824719451697631982422926675238248502170501569627556395875619564600587531422890212003952929325067813498958390095519100963598626450443103780781917045489137526377521695121594716424797216910752252094749957224424042047863869830458287114846161217532552045343745235776511344577755412402833175338541217548987687334493461236111032661075185714361252784989689657180878190058132112701323898697673356854132286586129946906160482715702618768869398700713988301485421822519104930442450343377920756456344715552821899659777521739288202633751258303637433110490141551780764889912485271829265224821750882760152112536985349681370761157202793523201156381835717321637420939424473215237574260806475544972321933149796156065126465186203580256364372579422208318560608817806013462242728082475787319168695978160861791054731154820533251279706873332364894538291172324730671914083193733203570060223897442373172904974570329139578763294810924815364789498523721281918680145538278976651264

Se traduce al siguiente programa Befunge:

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


4

Agregar ++ , 1069 bytes

+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

Pruébalo en línea!

Sí. Eso está codificado. Estoy seguro de que hay una mejor manera, y si desea encontrarla, continúe, pero de esta manera parece funcionar mejor ya que Add ++ es difícil de trabajar con la memoria.


4

R , 59 49 47 bytes

-10 bytes gracias a djhurio

-2 bytes gracias a Sven Hohenstein

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

Imprime en stdout. Superado por el usuario 2390246

Pruébalo en línea!


Puede reemplazar 26^2con 676para guardar un byte.
Pomo de la puerta

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

Para la misma cantidad de bytes, puede imprimir la matriz usandocat(m,fill=27)
JAD

1
@djhurio "Por la misma cantidad de bytes"
JAD

1
@Giuseppe El comando "diag<-"(x, y)es similar a diag(x) <- y. El valor no se asigna a una variable sino que se devuelve.
Sven Hohenstein

4

> <> , 46 44 42 bytes

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

Pruébalo en línea!

Explicación

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)

Esta es una toma completamente diferente de mis 46 bytes anteriores, así que también he incluido el TIO en el único. 46 bytes ¡Pruébelo en línea!

A continuación se muestra un enlace a las presentaciones de Emigna, fue la primera respuesta> <> pero creo que la mía es lo suficientemente diferente (y ahorra algunos bytes) para garantizar una segunda.

La respuesta de Emigna


Y ahora estamos atados. Mejor si
juegas

@Emigna, pensé que 3 bytes guardados serían suficientes: supongo que tengo más trabajo por hacer :)
Teal pelican

4

Haskell , 66 65 58 57 45 43 bytes

Gracias a @nimi y @maple_shaft por guardar 12 14 bytes.

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

Pruébalo en línea!


1
<$(' '<$[1..(fromEnum n-97)])
Obtendría

2
Puede cambiar la sugerencia de @ maple_shaft a (' '<$['b'..n]).
nimi

Como se permiten funciones sin nombre, no hay necesidad de f=.
nimi

2
Por cierto, el mismo recuento de bytes: ['a'..'z']>>= \n->(' '<$['b'..n])++[n,'\n'].
nimi

4

PHP, 23 bytes

Nota: utiliza la codificación IBM-850.

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

Corre así:

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

Explicación

Cree una matriz de todos los caracteres del alfabeto, únala con una pestaña vertical como pegamento.


4

brainfuck , 80 bytes

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

Pruébalo en línea!

Formateado:

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

Utiliza una función de generación multiplicativa simple para poner algunas constantes en la memoria, luego repite el proceso de imprimir N espacios y luego 'A' + Npara N = 0..25.

Anotado:

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 bytes

aS`\x0B.

\ x0B es un literal de tabulación vertical

Esto solo toma el alfabeto en minúsculas, lo divide y lo une con pestañas verticales. Esto produce el efecto deseado en ciertos terminales de Bash.

Ejecutando el script

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.