Alphabet diagonal

66

En l'absence de saisie, votre tâche consiste à générer les éléments suivants:

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

De manière non visuelle, votre tâche consiste à générer chaque lettre de l'alphabet, avec des espaces devant elle égaux à sa position dans l'alphabet moins un.

Si vous l’imprimez, il doit ressembler à ce qui précède. Les espaces blancs n'affectant pas l'apparence, ainsi que les retours à la ligne sont autorisés. Vous pouvez utiliser toutes les minuscules ou toutes les majuscules.

Vous pouvez également renvoyer cela depuis une fonction conformément aux règles habituelles, sous forme de chaîne avec des nouvelles lignes ou sous forme de liste de chaînes.

C'est du , donc la réponse la plus courte en octets gagne!

Stephen
la source
Les espaces doivent-ils être de véritables espaces ASCII ou puis-je donner une sortie comme a<VERTICAL-TAB>b<VERTICAL-TAB>c...? Que diriez-vous s'il y a aussi des personnages de retour arrière? Tant que le résultat visuel est le même?
Digital Trauma
@ DigitalTrauma tant qu'il semble identique, peu importe les espaces que vous utilisez.
Stephen
Puis-je utiliser des tabulations au lieu d'espaces?
@ yamboy1 hmm, probablement pas. La plupart des onglets sont configurés sur un grand nombre d'espaces. Si votre diagonale a l'air d'avoir des 4espaces avant b, elle ne sera pas très diagonale. Si la pente est ~, -1alors tout va bien.
Stephen
ne pas affecter l'apparence comprend d'avoir un espace supplémentaire ou 2?
MildlyMilquetoast

Réponses:

87

Charbon de bois , 2 octets

↘β

Essayez-le en ligne!

Comment?

 β - the lowercase alphabet
↘  - direction

Exactement le genre de défi pour lequel Charcoal a été conçu à l'origine.

Jonathan Allan
la source
4
Le bon langage :)
Stephen
2
Cela me rappelle que je devrais probablement travailler sur Crayon un peu plus… Je crois que ce ↘"abc ... xyz"qserait le programme de travail le plus court. ( Essayez-le en ligne! ) ↘``26O;)qDevrait fonctionner (commencez par un backtick; pour chaque I en 0 ... 25, sautez le I implicite, incrémentez le backtick et la sortie), mais une erreur "pile vide" est lancée pour une raison quelconque. .
ETHproductions
2
2 octets?! Dans quel encodage la SOUTH EAST ARROW est-elle un octet unique?
Wyck
6
@Wyck Charcoal (note: spéculation) utilise une page de code personnalisée, qui peut être compressée en instructions sur 1 octet. C'est légitime pour Code Golf. codegolf.meta.stackexchange.com/questions/9428/…
Draco18s Le
14
@StephenS, je pense que vous entendez le langage en bas à droite :)
Wossname
18

C, 45 octets

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

Merci à @Dennis d' avoir économisé 5 octets!

Poignée de porte
la source
9
Fonctionne sur ma machine ™
Citron destructible
Je pense que vous devrez initialiser ou réinitialiser ià un moment donné. Au moins sur TIO, f()ne fonctionne qu'une fois .
Dennis
@ Dennis Ah, tu as raison. Corrigé ça.
Poignée de porte
f(i){for(i=0;++i<27;printf("%*c\n",i,i+96));}enregistre quelques octets.
Dennis
3
f(i){for(i=96;i<122;)printf("%c\v",++i);}pour 41 octets - assurez-vous de l'exécuter sur un terminal réel (oui, cela est autorisé )
NieDzejkob
13

05AB1E , 14 8 6 octets

-2 octets grâce à @Emigna

AvyNú»

Comment ça fonctionne

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.

Essayez-le en ligne!

Version originale, 14 octets

26FNð×N65+ç«}»
Neil A.
la source
Vous pouvez enregistrer 2 autres octets avec AvyNú».
Emigna
@ Emigna: Merci! Est-ce que modifier cela dans.
Neil A.
ƶsemble tellement parfait, mais ce n'est pas :(.
Urne Magique Octopus
Λn'était probablement pas encore disponible à ce moment-là, mais 26A3Λenregistre un octet.
Kevin Cruijssen
1
@MagicOctopusUrn ₂A3Λaurait été encore plus court.
Kevin Cruijssen
12

JavaScript (ES6), 60 59 octets

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

Une fonction récursive qui retourne une chaîne avec une nouvelle ligne.

ETHproductions
la source
1
Whoa, c'est tellement sournois. Conversion d'un nombre compris entre 10 et 36 en un nombre dans une base étrange. Je ne comprends pas encore pourquoi la base doit augmenter aussi.
Steve Bennett
2
@SteveBennett Correct, mais n.toString(++n)+f(n)est un octet plus court que n.toString(36)+f(n+1).
ETHproductions
1
Vous pourriez faire f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):""pour 55.
Arnauld
1
Enregistrer un octet avec une ES8: "".padEnd(n-10)+n.toString(++n).
Shaggy
1
@Arnauld, f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):ssemblerait être permis.
Shaggy
12

Ruby , 28 octets

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

Essayez-le en ligne!

Explication:

L’opérateur << d’une chaîne en Ruby fait l’affaire, comme expliqué dans la Documentation

  • str << entier → str

  • str << obj → str

Append - Concatène l'objet donné à str. Si l'objet est un entier, il est considéré comme un point de code et est converti en un caractère avant la concaténation.

GB
la source
12

R, 38 37 36 octets

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

(L'utilisation de of writeest inspirée de la réponse de @ Giuseppe .)

Sven Hohenstein
la source
3
Je jure que j'ai essayé mais que je ne pouvais pas le faire fonctionner! Bien joué. Vous pouvez enregistrer 1 octet en utilisant 65:90, car les majuscules sont autorisées.
user2390246
@ user2390246 Merci de nous l'avoir signalé!
Sven Hohenstein
vous pouvez utiliser 1plutôt que ""de supprimer un autre octet.
Giuseppe
@ Giuseppe Merci de nous l'avoir signalé!
Sven Hohenstein
11

Vim, 29 octets

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

Essayez-le en ligne!

↵ signifie appuyer sur la touche Retour

<Echap> signifie appuyer sur la touche Echap

Comment cela marche-t-il?

: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
jmriego
la source
Essayez-le en ligne! Vous pouvez utiliser ceci pour le démontrer (V est basé sur Vim et la plupart du temps compatible avec la compatibilité ascendante, à moins que, apparemment, l'autoindent ne soit désactivé par défaut). Aussi, moins important, vous avez manqué l' +explication qui m'a jeté une seconde.
nmjcman101
Merci @ nmjcman101! J'essayais de trouver un moyen d'essayer vim en ligne et je ne le savais jamais à propos de V
jmriego
Vous pouvez utiliser au lieu de <Esc>. Cela semble un peu mieux à mon avis.
Blé Wizard
Vous pouvez sauvegarder un octet si vous le faites {au lieu degg
DJMcMayhem
Vous pouvez utiliser 2↵ au lieu de ↵↵↵ et peut-être Y au lieu de y $
GB
11

Python 2 , 36 octets

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

Cela tire parti des espaces blancs superflus qui n’affectent pas la règle d’ apparence .

Essayez-le en ligne!

Version alternative, 38 octets

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

Cela produit la sortie exacte de la spécification de défi.

Essayez-le en ligne!

Dennis
la source
Comment fonctionne %*cmême?
Leaky Nun
%*<identifier>prend deux arguments: la longueur à laquelle il faut appuyer et la chose à substituer. Certaines printfimplémentations ont des fonctionnalités encore plus obscures, comme celle que %1$<identifier>j'ai utilisée ici .
Dennis
9

PHP, 39 octets

for($s=a;!$s[26];$s=" ".++$s)echo"$s
";
utilisateur63956
la source
C'est plutôt verbeux :) Voici le mien
aross
8

Pure Bash, 13 ans

echo {a..z}^K^H

Ici ^Ket ^Hsont littéraux les caractères de contrôle ASCII de tabulation verticale et de retour arrière. Le xxddump de ce script est le suivant: utilisez-le xxd -rpour régénérer le script actuel:

00000000: 6563 686f 207b 612e 2e7a 7d0b 08         echo {a..z}..
  • {a..z}est une extension d’attelle bash standard à produire a b c ... z(séparée de l’espace)
  • l' ^Konglet vertical laisse tomber le curseur d'une ligne à la même position
  • le ^Hretour arrière déplace le curseur en arrière pour effacer l’espace séparateur

Essayez-le en ligne . colet tacsont utilisés dans le pied de page pour que cela s'affiche correctement dans une fenêtre de navigateur, mais cela n'est pas nécessaire dans un terminal classique.


Si les caractères de contrôle non orthodoxes ci-dessus dans la sortie sont trop exagérés pour vous, vous pouvez procéder comme suit:

Bash + utilitaires communs, 24

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

Ici ^Ket ^Hsont littéraux les caractères de contrôle ASCII de tabulation verticale et de retour arrière. Le xxddump de ce script est le suivant: utilisez-le xxd -rpour régénérer le script actuel:

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

Essayez-le en ligne . La tabulation verticale et le retour arrière peuvent être rendus invisibles par votre navigateur, mais ils sont présents (invisibles sur chrome, visibles sur firefox).

  • col -x re-restitue l'entrée de telle sorte que les caractères de contrôle amusants soient remplacés par des espaces et des nouvelles lignes pour donner le même résultat visuel
  • pour une raison quelconque, les collignes sont affichées dans l'ordre inverse. taccorrige cela.
Trauma numérique
la source
C’est très cool :) (et merci à meta et @Dennis d’avoir suggéré de trier les réponses sur codegolf par activité au lieu de score, pour obtenir de meilleures réponses au lieu des (très ennuyeuses) langages de codegolf construits: codegolf.meta.stackexchange. com / questions / 10127 /… )
Olivier Dulac le
De nombreux terminaux affichent ^Kle curseur en haut, comportement colà imiter ici.
Neil
@Neil oui, c'est logique - la colpage de manuel appelle un VT un "retour de ligne inverse". xterm, gnome-terminal et terminal OSX ont tous une ligne ...
Digital Trauma
8

Brain-Flak , 124, 116 , 106 octets

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

Essayez-le en ligne!

Explication:

Cette réponse abuse de la taille de pile Nilad , mais d’une manière nouvelle que je n’ai jamais utilisée auparavant et dont je suis assez fier. À part cela, la réponse n'est pas trop intelligente.

Donc, en analysant les caractères utilisés dans cet art ASCII, il y a vraiment trois valeurs fréquemment utilisées:

  • 32 (espace),

  • 64 (ajouter 64 à N pour obtenir la nième lettre de l'alphabet), et

  • 10 (nouvelle ligne)

En plus de 26. (nombre de boucles) Et ces chiffres sont poussés dans des endroits différents, nous ne pouvons donc pas vraiment réutiliser des valeurs intermédiaires pour réduire les grands nombres. Et faire tout ce qui est nécessaire pour obtenir ces chiffres ne représente qu’un énorme 86 octets:

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

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

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

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

C'est horrible. Alors voici comment nous le rendons plus pratique. L'approche évidente consiste à pousser un 32sur la pile en alternance, ce qui fait que notre 32extrait devient: (<>({})<>)et que l' 64extrait devient (<>({})({})<>). Si nous combinons notre poussée initiale 32 avec notre poussée initiale 26 , nous pouvons économiser environ 8 octets. (mon premier golf).

Mais voici le truc dont je suis vraiment fier. Comme nous n’utilisons pas la pile de remplacement pour une autre tâche, nous pourrions aussi bien jouer au 10e. Pour ce faire, nous allons placer 4 nombres arbitraires dans la pile dès le début du programme. Comme nous poussons également 32, la valeur du []nilad est augmentée à 5, ce qui rend notre 10extrait beaucoup plus pratique. Et heureusement pour nous, cela nous permet de jouer au golf les poussées 32 et 26 aussi!

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

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

Devient

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

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

Alors voici une explication détaillée:

# 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
}
DJMcMayhem
la source
7

V , 15 13 11 octets

¬azòÙr klDj

Essayez-le en ligne!

Explication

¬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
nmjcman101
la source
7

Google Sheets, 67 65 octets

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

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

Pour sortir de la clarification que tout espace blanc fera, j'ai utilisé des cellules visiblement vides

Sortie

Faites-moi savoir si cela ne compte pas, si j'ai mal compris le nombre d'octets ou si j'ai bousillé une étiquette, car c'est mon premier message ici.

Éditer: Il est possible d'économiser 2 octets en laissant "" car les feuilles de Google accepteront une valeur if si vide.

M. Parivir
la source
1
Bienvenue chez PPCG :) Bon travail en battant les autres Google Sheets répondre!
Stephen
7

APL (Dyalog) , 9 7 octets SBCS

-2 octets grâce à l'indice ngn.

↑⍨∘-⌸⎕A

[Essayez-le en ligne!] [TIO-j3o0ipjy]

⎕A le majuscule Un alphabet

 entre chaque paire (élément, liste d’index), insérez la fonction tacite suivante:

↑⍨ de l'élément (la lettre) prendre…

 le…

- nombre négatif de caractères d'index, c'est-à-dire que beaucoup de caractères de l'arrière, padding sur le devant avec des espaces.

Essayez-le en ligne!

Adam
la source
Agréable. Ma tentative de J était un peu plus verbeuse. Existe-t-il une traduction de ces verbes en J?
Jonah
@Jonah Verbs: is {.and is i.Adverbs: ¨is "0and is ~.
Adám
Merci. On dirait que la traduction en J perd un peu de brièveté:(a.{~97+i.26){."0~-1+i.26
Jonah
@ Adám, la sortie ne semble pas nécessaire. Astuce: utiliser pour sortir une matrice correcte et économiser 2 octets
ngn
@ngn Vous pouvez également renvoyer (…) une liste de chaînes. Mais je vais enquêter. Edit: Oh oui bien sûr!
Adám
6

Octave, 25 19 ou 12? octets

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

Essayez-le en ligne!

Autre solution proposée par @LuisMendo (12 octets) que je l’ai testée dans la version Windows d’Octave:

diag('a':'z')

Explication:

Génère une matrice diagonale de a:z.

rahnema1
la source
@LuisMendo In tio Je ne peux pas produire le même résultat. C'est une expression, qui peut être évaluée, qui produit le résultat souhaité :)
rahnema1
La solution proposée par Luis semble fonctionner sur TIO maintenant ... Nouvelle version d'Octave peut-être?
Stewie Griffin
Ou nouvelle version de tio !?
Rahnema1
6

Java 8, 72 71 70 61 octets

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

-1 octet en affichant l'alphabet majuscule au lieu de minuscule.
-1 octet en imprimant directement, au lieu de renvoyer une chaîne multiligne.
-8 octets grâce à @ OliverGrégoire en utilisant printfdirectement pour se débarrasser de String s="";. Et aussi -1 octet en changeant ()->à o->.

Essayez-le ici.

Kevin Cruijssen
la source
La mise en œuvre naïve est plus courte que je l'aurais pensé. Vous pouvez enregistrer un octet avec c=65(ou 64réellement) pour ne pas avoir besoin du numéro à 3 chiffres. Le retour d'un tableau au lieu de la chaîne peut-il vous faire économiser des octets tout en supprimant le +"\n"?
TheLethalCoder
@TheLethalCoder Ah, je ne savais pas que nous étions autorisés à sortir l'alphabet majuscule. Écrémé sur cela. Merci. Et qu'entendez-vous par sortie d'un tableau? Comme un tableau de tableaux?
Kevin Cruijssen
1
@TheLethalCoder N'importe quel conseil est le bienvenu, alors merci. Mais dans ce cas, il ne sera pas plus court. :)
Kevin Cruijssen
1
@Winter À propos de votre première suggestion, cela fait encore l'objet de discussions dans ce méta-post , mais à en juger par les votes, je suppose que c'est effectivement permis à partir de maintenant. En ce qui concerne le second, je ne suis pas sûr. Cela ressemble un peu à tricher / à plier les règles, en particulier après ces discussions houleuses dans les commentaires de ce méta post et ses réponses .
Kevin Cruijssen
1
62 octets: en ()->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}utilisant la même idée que dans un autre défi .
Olivier Grégoire
5

Gelée ,  10 à  9 octets

-1 octet grâce à Dennis (éviter de décrémenter Jen utilisant une plage basse 26Ḷ, directement)

26Ḷ⁶ẋżØaY

Un programme complet qui imprime le résultat.

Essayez-le en ligne!

( ØaJ’⁶ẋżfor 7 est un lien monadique qui renvoie une liste de listes de listes de caractères, mais [["a"],[" ","b"],[" ","c"],...]qui est probablement inacceptable.)

Je ne serais cependant pas surpris s'il y avait un moyen plus court auquel je n'ai pas pensé!

Comment?

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)
Jonathan Allan
la source
Je le permettrais même, [["a"],[" ","b"],[" "," ","c"],...]car une liste de caractères est une définition alternative pour une chaîne, mais un tuple ne semble pas convenir :)
Stephen
Oui c'est ce que je pensais.
Jonathan Allan
1
... notez que dans ce qui précède, chaque "..."liste est une liste de caractères, alors c'est vraiment [[['a']],[[[' '],['b']],[[' ',' '],['c']],...]parce que Jelly n'a pas de chaînes, juste des listes.
Jonathan Allan
26Ḷ⁶ẋżØaYenregistre un octet.
Dennis
ØaJ’⁶ẋżcar 7, pour votre version alternative.
Leaky Nun
5

PowerShell, 29 octets

0..25|%{' '*$_+[char]($_+97)}
TessellatingHeckler
la source
J'aime la façon dont vous ajoutez 97 au $_fur et à mesure, gentil.
racine le
5

Alice , 22 20 octets

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

Essayez-le en ligne!

Même si la sortie est une chaîne, il s'avère que le mode ordinal n'est pas la solution pour relever ce défi.

Explication

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

Solution précédente

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

Essayez-le en ligne!

Je suis passé par environ dix solutions de 23 octets avant de pouvoir trouver celui-ci.

Explication

Ce programme utilise la bande pour suivre le nombre d'espaces à afficher. Les modes cardinal et ordinal utilisent la même bande, mais ils ont des têtes de bande séparées. Les deux modes ont des interprétations différentes de ce qu'ils voient sur la bande et le programme exploite pleinement cette différence.

Les commandes sont exécutées dans l'ordre suivant:

[                   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
Nitrodon
la source
5

Brainfuck, 103 octets

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

Essayez-le en ligne!

L'emplacement des variables est en quelque sorte améliorable.

Explication

>-<-----[[<+>->>+++>-<<<]>++]   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.
]
6infinity8
la source
5

Google Sheets, 69 octets

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

Rien de compliqué ici. La seule astuce consiste à utiliser ArrayFormulaet ROW(A1:A26)à renvoyer 26 valeurs différentes pour la JOINfonction. La sortie ressemble à ceci:

Sortie


Je pense qu'Excel 2016 peut faire la même chose avec TEXTJOINmais je ne peux pas entrer de formules matricielles dans la version en ligne et je n'ai que 2013 moi-même. La formule devrait être la suivante:

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

Le saisir sous forme de formule matricielle ( Ctrl+ Shift+ Enter) ajoute des accolades des { }deux côtés, ce qui le porte à 67 octets. Toute personne qui peut vérifier que cela fonctionne est la bienvenue pour l’utiliser comme sa propre réponse.

Rôti d'ingénieur
la source
5

Graine , 6014 octets

Je ne pense pas que cela remportera de prix, mais juste pour le plaisir, voici une solution dans Seed.

86 11103250503694729158762257823050815521568836599011209889044745493166180250197633623839266491438081837290079379263402288506775397211362446108152606095635373134468715450376738199004596861532212810083090232034321755895588102701453625219810339758989366211308223221344886043229936009486687653111291562495367476364760255760906228050130847228170228716790260998430434027546345063918859356161024202180254514539438087787769611000320430464740566450402368450792375043801526494811596087812709169139468697779440918934518195843690439213251884693846598754642076364755341359062651237754916053099089619667382845958005035392458577634784453744876558142057256976895330859887974064083588368087014591508237946214519271550243549214199679364098489146944338807874570414584343165070707969101892779772740177526390597395955859236589308394889243501541206981604661264930842784772121710695027991351718061777696274815931123342985242351444203296855501870888626347939456384376808446806093364176576945969539054970975848477876079897476093353730443488664472826635815956526890935049081522728044807877072639829234224838977148057506785320443165975265560224605597481381188291535996775480326796788286452216432605854564432262547835415260058472165825285438444435690700488258778785613363062417500848996527077259315494936037544655054620369560227407957368700650031346856230643646273909094915618471799926504192999361174763592054723307855670381682927214117502862645460031555724588536036895597768493827964819026940533784490457441244859937078155137620826821294513857153097135094397278852300032685608169642137925241118197368192392427097109982751185030229544527638686131131545529690698706313745703838144933923021851042677941879847025167921010148923860660695145106913052517930707522151230705792709484338746351589089180137363986003757314611932324492978098101655359729841878862276799317010824753645947659706175083519817734448003718088115457982394423932136760435046136644679525408371158980833993157988971884061469882136904103033944270884697456159261033500286722891139158500027351042265757431184139617566089023339480051231776345929815102059539844917563709940188668873305602146506284075271989710388430531233185164106985265575418252638186398535149202928422854319253947591044830747981534342833040219194969504971457701296402664807369043224201667623773161453335066484102800249947322601702575025462427139266561015140950621152993027466758026351218924607290766894274223554418125824416921899080393405328694235821466034161071834073874727856768719898425047229002772806527172294625623026601313091815217479540688812203850300478145319935479599086534606210099372526810614742385909275512758349679098012967475393301857434507012875239092688018536028125644341148882858752275129016876257290205949225918496182271679312996010157634568807332616541938310641844258434083838017690572891417189135014450484203635258935943095637185443145042430274553211816422809756194554145177421779800554334935224073734034988935790096239926730047370699006392111034056662661567902477446646680125183082979598538506383502737734442490068661537425714549752783861222862366340979663873475326752237893690641570287341027097775099918958849864419430754493042534812120486345363285167685811903366691676146427476942948696624274431993989133835880516551024369474029197791751838810883302415448112237526350703063618171739262753474029252659418383385834751808940073804107171146665382663467460066719556797639176747423279761528061219482681051780434845070421974558638870988408449698678976622755518024906714421419806347234183574860655249471877105716127767795785164699804819127058322715857697491583787449703283625085118896433923054087238479453964363805045497229148813441732912067120594705269402106426011497763749556561398150139686331615167139081591537739333533146667211063179804707883556569241294269430626179579760506971066676011512530066694518309930078451295032445835025178124213221937594928472509588116557231122849491576207720183829735710200290762251904109318007206980645946249679357907549498615310165588678201768095297568708803842208357473777731751349499510116345704811971207818719582793964185192140178454948686109674659005978400204479072321714207828018696339659886683414074211823497880135255138161141724546221354224299071581607979907417508104234534779573666933024250229754952685174194168516481670999039048675109878524061868078078216337487277443941946961426121900907734301692962783139932352047932263834773963592317279425421954035566305805348109175553209815893678595198155962166838761859540063188209014774346841267440789072833797121217961797443744676162541668802226500817146368372390178287945076657776275930590173768326046610094573983886099504933977126798348879838826160714899283593774855907724617352862079916515034033299006419237012240730789008999523238851913897908225482003661109026061857228300111070725651744312468140016983078297938157227595743419983763920290850801438187869169473456288283458163865462359588316419331445070232596307970490434468929587726795603069137946085898481642595124580643542063564880389350236902538522311931690905858973696558714577085714396738993556273941292496636824719451697631982422926675238248502170501569627556395875619564600587531422890212003952929325067813498958390095519100963598626450443103780781917045489137526377521695121594716424797216910752252094749957224424042047863869830458287114846161217532552045343745235776511344577755412402833175338541217548987687334493461236111032661075185714361252784989689657180878190058132112701323898697673356854132286586129946906160482715702618768869398700713988301485421822519104930442450343377920756456344715552821899659777521739288202633751258303637433110490141551780764889912485271829265224821750882760152112536985349681370761157202793523201156381835717321637420939424473215237574260806475544972321933149796156065126465186203580256364372579422208318560608817806013462242728082475787319168695978160861791054731154820533251279706873332364894538291172324730671914083193733203570060223897442373172904974570329139578763294810924815364789498523721281918680145538278976651264

Cela se traduit par le programme Befunge suivant:

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

Ajouter ++ , 1069 octets

+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

Essayez-le en ligne!

Oui. C'est codé en dur. Je suis sûr qu'il existe un meilleur moyen, et si vous voulez le trouver, allez-y, mais ce moyen semble fonctionner au mieux, car Add ++ est difficile à utiliser avec la mémoire.

caird coinheringaahing
la source
4

R , 59 49 47 octets

-10 octets grâce à djhurio

-2 octets grâce à Sven Hohenstein

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

Imprime sur la sortie standard. Outgolfed par user2390246

Essayez-le en ligne!

Giuseppe
la source
Vous pouvez remplacer 26^2par 676pour sauvegarder un octet.
Poignée de porte
2
m=matrix("",26,26);diag(m)=letters;write(m,'',26)(49 bytes)
djhurio
Pour le même nombre d'octets, vous pouvez imprimer la matrice en utilisantcat(m,fill=27)
JAD
1
@djhurio "Pour le même nombre d'octets"
JAD
1
@ Giuseppe La commande "diag<-"(x, y)est similaire à diag(x) <- y. La valeur n'est pas affectée à une variable mais renvoyée.
Sven Hohenstein
4

> <> , 46 44 42 octets

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

Essayez-le en ligne!

Explication

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)

Ceci est une prise complètement différente de mes 46 octets précédents, aussi ai-je inclus le TIO dans le seul. 46 octets Essayez-le en ligne!

Vous trouverez ci-dessous un lien vers les observations d'Emigna. Il s'agissait de la première> <> réponse, mais je pense que la mienne est suffisamment différente (et économise quelques octets) pour en justifier une seconde.

La réponse d'Emigna

Sarcelle
la source
Et maintenant nous sommes attachés. Meilleur si vous jouez sur un octet ou deux pour en être sûr;)
Emigna
@ Emigna, je pensais que 3 octets sauvegardés seraient suffisants: o suppose que j'ai encore du travail à faire :)
Pélican sarcelle
4

Haskell , 66 65 58 57 45 43 octets

Merci à @nimi et @maple_shaft pour la sauvegarde de 12 14 octets.

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

Essayez-le en ligne!

vroomfondel
la source
1
Vous obtiendriez le même score mais vous pouvez parfois utiliser à la <$place de répliquer:(' '<$[1..(fromEnum n-97)])
maple_shaft
2
Vous pouvez changer la suggestion de @ maple_shaft en (' '<$['b'..n]).
nimi
Comme les fonctions non nommées sont autorisées, vous n'avez pas besoin de f=.
nimi
2
Compte BTW, même octet: ['a'..'z']>>= \n->(' '<$['b'..n])++[n,'\n'].
nimi
4

PHP, 23 octets

Remarque: utilise l'encodage IBM-850.

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

Courez comme ça:

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

Explication

Créez un tableau de tous les caractères de l'alphabet, associez-le à un onglet vertical en guise de colle.

aross
la source
4

brainfuck , 80 octets

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

Essayez-le en ligne!

Formaté:

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

Utilise une fonction de génération multiplicative simple pour mettre certaines constantes en mémoire, puis répète le processus d'impression de N espaces puis 'A' + Npour N = 0..25.

Annoté:

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 <<.
>>>]
Conor O'Brien
la source
4

RProgN 2 , 5 octets

aS`\x0B.

\ x0B est un littéral d'onglet vertical

Cela prend juste l’alphabet minuscule, le divise et le joint avec des tabulations verticales. Cela produit l’effet souhaité sur certaines bornes Bash.

Lancer le script

ATaco
la source