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 code-golf , donc la réponse la plus courte en octets gagne!
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?4
espaces avantb
, elle ne sera pas très diagonale. Si la pente est ~,-1
alors tout va bien.Réponses:
Charbon de bois , 2 octets
Essayez-le en ligne!
Comment?
Exactement le genre de défi pour lequel Charcoal a été conçu à l'origine.
la source
↘"abc ... xyz"q
serait le programme de travail le plus court. ( Essayez-le en ligne! )↘``26O;)q
Devrait 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. .C, 45 octets
Merci à @Dennis d' avoir économisé 5 octets!
la source
i
à un moment donné. Au moins sur TIO,f()
ne fonctionne qu'une fois .f(i){for(i=0;++i<27;printf("%*c\n",i,i+96));}
enregistre quelques octets.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é )05AB1E ,
1486 octets-2 octets grâce à @Emigna
Comment ça fonctionne
Essayez-le en ligne!
Version originale, 14 octets
la source
AvyNú»
.ƶ
semble tellement parfait, mais ce n'est pas :(.Λ
n'était probablement pas encore disponible à ce moment-là, mais26A3Λ
enregistre un octet.₂A3Λ
aurait été encore plus court.JavaScript (ES6),
6059 octetsUne fonction récursive qui retourne une chaîne avec une nouvelle ligne.
la source
n.toString(++n)+f(n)
est un octet plus court quen.toString(36)+f(n+1)
.f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):""
pour 55."".padEnd(n-10)+n.toString(++n)
.f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):s
semblerait être permis.Ruby , 28 octets
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.
la source
R,
383736 octets(L'utilisation de of
write
est inspirée de la réponse de @ Giuseppe .)la source
1
plutôt que""
de supprimer un autre octet.Vim, 29 octets
Essayez-le en ligne!
↵ signifie appuyer sur la touche Retour
<Echap> signifie appuyer sur la touche Echap
Comment cela marche-t-il?
la source
+
explication qui m'a jeté une seconde.␛
au lieu de<Esc>
. Cela semble un peu mieux à mon avis.{
au lieu degg
Python 2 , 36 octets
Cela tire parti des espaces blancs superflus qui n’affectent pas la règle d’ apparence .
Essayez-le en ligne!
Version alternative, 38 octets
Cela produit la sortie exacte de la spécification de défi.
Essayez-le en ligne!
la source
%*c
même?%*<identifier>
prend deux arguments: la longueur à laquelle il faut appuyer et la chose à substituer. Certainesprintf
implémentations ont des fonctionnalités encore plus obscures, comme celle que%1$<identifier>
j'ai utilisée ici .PHP, 39 octets
la source
Pure Bash, 13 ans
Ici
^K
et^H
sont littéraux les caractères de contrôle ASCII de tabulation verticale et de retour arrière. Lexxd
dump de ce script est le suivant: utilisez-lexxd -r
pour régénérer le script actuel:{a..z}
est une extension d’attelle bash standard à produirea b c ... z
(séparée de l’espace)^K
onglet vertical laisse tomber le curseur d'une ligne à la même position^H
retour arrière déplace le curseur en arrière pour effacer l’espace séparateurEssayez-le en ligne .
col
ettac
sont 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
Ici
^K
et^H
sont littéraux les caractères de contrôle ASCII de tabulation verticale et de retour arrière. Lexxd
dump de ce script est le suivant: utilisez-lexxd -r
pour régénérer le script actuel: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 visuelcol
lignes sont affichées dans l'ordre inverse.tac
corrige cela.la source
^K
le curseur en haut, comportementcol
à imiter ici.col
page de manuel appelle un VT un "retour de ligne inverse". xterm, gnome-terminal et terminal OSX ont tous une ligne ...Brain-Flak ,
124, 116, 106 octetsEssayez-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:
C'est horrible. Alors voici comment nous le rendons plus pratique. L'approche évidente consiste à pousser un
32
sur la pile en alternance, ce qui fait que notre32
extrait devient:(<>({})<>)
et que l'64
extrait 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 notre10
extrait beaucoup plus pratique. Et heureusement pour nous, cela nous permet de jouer au golf les poussées 32 et 26 aussi!Devient
Alors voici une explication détaillée:
la source
V ,
151311 octetsEssayez-le en ligne!
Explication
la source
Google Sheets,
6765 octets= 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
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.
la source
APL (Dyalog) ,
97 octets SBCS-2 octets grâce à l'indice ngn.
[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!
la source
↑
is{.
and⍳
isi.
Adverbs:¨
is"0
and⍨
is~
.(a.{~97+i.26){."0~-1+i.26
⌸
pour sortir une matrice correcte et économiser 2 octetsOctave,
2519 ou 12? octetsEssayez-le en ligne!
Autre solution proposée par @LuisMendo (12 octets) que je l’ai testée dans la version Windows d’Octave:
Explication:
Génère une matrice diagonale de
a:z
.la source
Java 8,
72717061 octets-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
printf
directement pour se débarrasser deString s="";
. Et aussi -1 octet en changeant()->
ào->
.Essayez-le ici.
la source
c=65
(ou64
ré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"
?()->{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 .Gelée ,
10 à9 octets-1 octet grâce à Dennis (éviter de décrémenter
J
en utilisant une plage basse26Ḷ
, directement)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?
la source
[["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 :)"..."
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.26Ḷ⁶ẋżØaY
enregistre un octet.ØaJ’⁶ẋż
car7
, pour votre version alternative.PowerShell, 29 octets
la source
$_
fur et à mesure, gentil.Alice ,
2220 octetsEssayez-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
Solution précédente
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:
la source
Brainfuck, 103 octets
Essayez-le en ligne!
L'emplacement des variables est en quelque sorte améliorable.
Explication
la source
Google Sheets, 69 octets
Rien de compliqué ici. La seule astuce consiste à utiliser
ArrayFormula
etROW(A1:A26)
à renvoyer 26 valeurs différentes pour laJOIN
fonction. La sortie ressemble à ceci:Je pense qu'Excel 2016 peut faire la même chose avec
TEXTJOIN
mais 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: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.la source
Graine , 6014 octets
Je ne pense pas que cela remportera de prix, mais juste pour le plaisir, voici une solution dans Seed.
Cela se traduit par le programme Befunge suivant:
la source
shortC , 33 octets
Essayez-le en ligne!
la source
Ajouter ++ , 1069 octets
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.
la source
R ,
594947 octets-10 octets grâce à djhurio
-2 octets grâce à Sven Hohenstein
Imprime sur la sortie standard. Outgolfed par user2390246
Essayez-le en ligne!
la source
26^2
par676
pour sauvegarder un octet.m=matrix("",26,26);diag(m)=letters;write(m,'',26)
(49 bytes)cat(m,fill=27)
"diag<-"(x, y)
est similaire àdiag(x) <- y
. La valeur n'est pas affectée à une variable mais renvoyée.> <> ,
46 4442 octetsEssayez-le en ligne!
Explication
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
la source
Haskell ,
66 65 58 57 4543 octetsMerci à @nimi et @maple_shaft pour la sauvegarde de
1214 octets.Essayez-le en ligne!
la source
<$
place de répliquer:(' '<$[1..(fromEnum n-97)])
(' '<$['b'..n])
.f=
.['a'..'z']>>= \n->(' '<$['b'..n])++[n,'\n']
.PHP, 23 octets
Remarque: utilise l'encodage IBM-850.
Courez comme ça:
Explication
Créez un tableau de tous les caractères de l'alphabet, associez-le à un onglet vertical en guise de colle.
la source
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' + N
pourN = 0..25
.Annoté:
la source
RProgN 2 , 5 octets
\ 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.
la source