Dans le moins d’octets possible, écrivez un programme ou une fonction générant les éléments suivants:
Abcdefghijklmnopqrstuvwxyz
aBcdefghijklmnopqrstuvwxyz
abCdefghijklmnopqrstuvwxyz
abcDefghijklmnopqrstuvwxyz
abcdEfghijklmnopqrstuvwxyz
abcdeFghijklmnopqrstuvwxyz
abcdefGhijklmnopqrstuvwxyz
abcdefgHijklmnopqrstuvwxyz
abcdefghIjklmnopqrstuvwxyz
abcdefghiJklmnopqrstuvwxyz
abcdefghijKlmnopqrstuvwxyz
abcdefghijkLmnopqrstuvwxyz
abcdefghijklMnopqrstuvwxyz
abcdefghijklmNopqrstuvwxyz
abcdefghijklmnOpqrstuvwxyz
abcdefghijklmnoPqrstuvwxyz
abcdefghijklmnopQrstuvwxyz
abcdefghijklmnopqRstuvwxyz
abcdefghijklmnopqrStuvwxyz
abcdefghijklmnopqrsTuvwxyz
abcdefghijklmnopqrstUvwxyz
abcdefghijklmnopqrstuVwxyz
abcdefghijklmnopqrstuvWxyz
abcdefghijklmnopqrstuvwXyz
abcdefghijklmnopqrstuvwxYz
abcdefghijklmnopqrstuvwxyZ
abcdefghijklmnopqrstuvwxYz
abcdefghijklmnopqrstuvwXyz
abcdefghijklmnopqrstuvWxyz
abcdefghijklmnopqrstuVwxyz
abcdefghijklmnopqrstUvwxyz
abcdefghijklmnopqrsTuvwxyz
abcdefghijklmnopqrStuvwxyz
abcdefghijklmnopqRstuvwxyz
abcdefghijklmnopQrstuvwxyz
abcdefghijklmnoPqrstuvwxyz
abcdefghijklmnOpqrstuvwxyz
abcdefghijklmNopqrstuvwxyz
abcdefghijklMnopqrstuvwxyz
abcdefghijkLmnopqrstuvwxyz
abcdefghijKlmnopqrstuvwxyz
abcdefghiJklmnopqrstuvwxyz
abcdefghIjklmnopqrstuvwxyz
abcdefgHijklmnopqrstuvwxyz
abcdefGhijklmnopqrstuvwxyz
abcdeFghijklmnopqrstuvwxyz
abcdEfghijklmnopqrstuvwxyz
abcDefghijklmnopqrstuvwxyz
abCdefghijklmnopqrstuvwxyz
aBcdefghijklmnopqrstuvwxyz
Abcdefghijklmnopqrstuvwxyz
Un retour à la ligne est autorisé. Vous pouvez trouver une référence ungolfed implémentation Python ici .
code-golf
kolmogorov-complexity
Absinthe
la source
la source
Réponses:
Pyth, 12 octets
Manifestation.
En Pyth,
G
c'est l'alphabet minuscule.+Gt_G
estabcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba
le caractère qui doit être mis en majuscule dans chaque ligne.V
configure une boucle for sur cette chaîne, avecN
comme variable de boucle.Dans le corps,
XGNrN1
est une fonction de traduction de chaîne.X
traduitG
, l’alphabet, en remplaçantN
parrN1
, la version majuscule deN
.r ... 1
est la fonction majuscule. Cela donne la sortie souhaitée.la source
C, 73
Parfois, l'approche la plus simple est la meilleure: imprimez chaque caractère un par un. cela bat beaucoup de langues, il ne devrait vraiment pas.
explication
la source
Python 2, 69 octets
Sympa et simple, je pense.
la source
Brainfuck (8bit), 231 octets
Ok, donc ce ne sera jamais le plus court, mais c'est la participation qui compte ... pas vrai?!
Essayez-le ici (cochez la case 'Mémoire dynamique')
la source
>
on décale une cellule à droite, par exemple.Binaire MS-DOS, 61
Ce code n'a pas besoin d'être compilé, il s'exécutera sous MS-DOS si vous l'écrivez dans un fichier nommé wave.com. Le code en hexadécimal:
Ou, si vous préférez quelque chose de plus lisible, voici comment le produire en utilisant debug.exe (la ligne vide après le code est importante):
la source
Ruby:
71686563 caractèresÉchantillon échantillon:
la source
puts f=(e=*?a..?z).map{|c|(e*"").tr c,c.upcase},f[0,25].reverse
Matlab,
605854 octetsMerci à Dennis Jaheruddin pour m'avoir sauvé 4 octets.
la source
char(x)
par[x '']
pour enregistrer un octet.end-1
une façon plutôt verbeuse d'écrire 25![x '']
tour n'est pas du tout habituel pour moi. Mais maintenant, je me souviens de l'avoir vu dans une de vos réponses :-)SWI-Prolog, 136 octets
Abuser de revenir en arrière pour boucler ...
la source
Haskell
1008988 octetsLa fonction d'assistance lambda
\(h,c:t)
prend une paire de listes de valeurs ascii et les concatène, mais avec la première valeur de la deuxième liste en majuscule. La fonction principale divise l’alphabet minuscule (donné en ascii97..122
) à chaque position0,..,24,25,24,..,0
et appelle le lambda à chaque étape. Avant l'impression, chaque valeur est convertie en caractère correspondant.la source
Scala
110109 personnagesla source
foreach println
àmkString("\n")
, et la sortie d' une chaîne comme valeur de retour au lieu d'imprimer à l'écranSQL (postgreSQL),
107101Generate est une série de -25 à 25 et utilise la valeur absolue pour remplacer les caractères par leur version majuscule. Merci à manatwork pour le conseil concernant l’opérateur @.
la source
@
opérateur?Haskell, 81 octets
Compter octets comme @nimi l'a fait;
f
est une action IO qui imprime la sortie souhaitée.la source
Pyth -
1817 octetsPremier passage, peut probablement être beaucoup plus court. Utilisations
X
pour substituer etr1
capitaliser.Essayez-le en ligne ici .
la source
MATLAB - 58 octets
Semblable à la solution de Luis Mendo , mais utilisant les capacités de diffusion de
bsxfun
.Profitant qu'en ASCII, la différence entre les majuscules et les minuscules est à exactement 32 valeurs l'une de l'autre, nous générons d'abord des minuscules à partir des codes ASCII 97 à 122 qui sont les codes ASCII de minuscule a à minuscule respectueusement z, puis créez une matrice de 51 lignes contenant les 26 codes ASCII de 97 à 122. Chaque ligne de cette matrice contient donc une séquence numérique de valeurs de 97 à 122. Ensuite, nous créons une autre matrice dans laquelle chaque i ème ligne de cette matrice contient 32 dans la i ème colonne. Les 26 premières lignes de cette matrice ont ce motif, qui est essentiellement la matrice d’identité multipliée par 32. La fonction
eye
crée une matrice d'identité pour vous. Les 25 dernières lignes de cette matrice correspondent à la matrice d'identité mise à l'échelle pivotée à 90 degrés.En prenant cette matrice d'identité pondérée personnalisée et en la soustrayant à la première matrice, puis en convertissant les codes ASCII résultants en caractères, la séquence souhaitée "Mexican Hat" est produite.
Exemple Run
Vous pouvez également exécuter cet exemple en utilisant l'environnement Octave en ligne d'IDEone. Octave est essentiellement MATLAB mais gratuit: http://ideone.com/PknMe0
la source
rot90
-- bien pensé!J,
3123 octets8 octets enregistrés grâce à @Mauris.
Essayez-le en ligne ici.
la source
u:|:(97+i.26)-32*=|i:25
(la monade=
est vraiment utile ici!)=
ici. C'est très gentil!Perl, 51 octets
Code de 50 octets + paramètre de ligne de commande de 1 octet
Peut être utilisé comme suit:
Ou en ligne ici (note j'ai dû ajouter
,"\n"
à cela car je ne pouvais pas ajouter l'argument -l).Méthode beaucoup plus longue Avant la version abrégée ci-dessus, j'ai essayé une méthode différente, qui s'est avérée plutôt épaisse. Je l'ai laissé ci-dessous quand même pour référence.
86 octets code + 1 octet argument de ligne de commande
Tout d'abord, Perl a bien joué au golf, alors j'imagine qu'il est possible de faire beaucoup de choses avec cela. Suggérez des améliorations!
Peut être utilisé comme suit:
Ou en ligne ici (note je devais ajouter. "\ N" à cela car je ne pouvais pas ajouter l'argument -l).
Explication
L’approche générale consiste à utiliser la substitution de regex pour faire tout le travail difficile. Nous commençons avec:
Ceci correspond
(([A-Z])|0)(\D)
et est remplacé par\U\3
(\ U change en majuscule) pour donner:À partir de ce moment, nous continuons à faire correspondre la même expression rationnelle et à la remplacer par
\L\2\U\3
:Maintenant, la deuxième alternance des expressions rationnelles correspond
(.)((?2))(1)
(ce qui correspond à(.)([A-Z])(1)
). Nous remplaçons par\U\4\6\L\5
pour donner:Cela continue à correspondre et à remplacer jusqu'à atteindre:
et il n'y a plus de correspondance de regex.
À chaque point de la boucle, nous enlevons le «1» et l’imprimons.
la source
PHP,
877169 octetsPas le plus court, mais cela fonctionne comme prévu.
Merci à @manatwork pour quelques conseils pour réduire sa taille de beaucoup.
Et grâce à @Blackhole , la taille a été réduite de 2 octets.
Pas vraiment joli, mais ça marche.
la source
join()
le premier paramètre de.$i<25?$i:25-($i-25)
→25-abs($i-25)
for(;$i<51;){$L=range(a,z);$L[25-abs($i++-25)]^=" ";echo join($L),"↵";}
(Enroulez juste la ligne où j'ai utilisé “” dans le code.)\n
était là. L'initialisation de a$i
été laissée comme un accident. Et merci beaucoup pour le25-abs($i-25)
. Je n'y arriverais pas tout seul.for
boucle peut être optimisée:for(;$L=range(a,z),$L[25-abs($i++-25)]^=' ',$i<52;)echo join($L).'↵';
(-2 octets).PowerShell 3.0, 82 octets
la source
Architecture de type T21 de nœud TIS -
216215 octetsRegardez-le en action ici! Il y a une
DOWN
vidéo dans laquelle j'ai joué au golf plus tardANY
, mais elle est fonctionnellement identique.Ce langage n'a pas de concept de chaînes ni de caractères, je dois donc souligner que j'utilise les valeurs ASCII, c'est-à-dire que la sortie commence
97, 66, 67
...88, 89, 90, 10, 65, 98
...Voici le code au format des données de sauvegarde de TIS-100, à des fins de scoring:
Explication
la source
JavaScript ES6, 121 octets
C'est vraiment long car il est plus logique de coder en dur l'alphabet que d'utiliser l'absurdement long
String.fromCharCode
pour générer les caractères. Testez-le ci-dessous avec l'extrait de pile, qui utilise l'ES5 et les versions ultérieures mieux prises en charge.la source
CJam, 23 octets
Essayez-le en ligne dans l' interprète CJam .
Comment ça fonctionne
la source
R,
7870Amélioré par @MickyT
la source
M=replicate(26,c(letters,"\n"))
plutôt qu'une matrice. Cela vous fera économiser quelques octetswrite
: tio.run/##K/r/…Assemblage Linux, 289
Malheureusement, pas compétitif avec les langages de haut niveau et probablement loin d’être optimal, mais assez simple. Exécutez-le en utilisant
nasm -f elf64 -o a.o wave.S; ld -s -o a a.o; ./a
(le binaire résultant ne fait que 568 octets):la source
Assemblage x86 pour DOS, 41 octets compilés
Binaire:
Code source, enregistrez sous "wave.asm", compilez avec "nasm -f bin -o wave.com wave.asm" et exécutez-vous avec "dosbox wave.com"
la source
C #,
140139135132Étendu
Sauvegardé 1 octet grâce à @ Gunther34567 en utilisant un ternaire au lieu de
if
4 octets enregistrés, puis imbriquant ce ternaire dans la boucle et en déplaçant l'alphabet vers l'extérieur de la boucle
3 octets enregistrés combinant des déclarations d'entiers grâce à @eatonphil
la source
if(i==25)d=-1;
àd=i==25?-1:d;
var d=1
àint d=1,i
.Bash:
7666 caractèresÉchantillon échantillon:
la source
printf
appel. J'ai rejeté le montage , vous pouvez donc le tester vous-même.Sed:
135119116111 caractères(Code de 109 caractères + Option de ligne de commande de 1 caractère + Entrée de 1 caractère.)
Échantillon échantillon:
la source
Javascript (ES6), 113 octets
110 octets
102 octets
La vieille école est imbattable à moins d’avoir un opérateur / une fonction / un générateur de gamme / quoi que ce soit dans js
100 octets
Malheureusement, Math.abs est trop long
9694 octetsBien que je sois descendu sans explication, je continue ma lutte
Nous pouvons réduire quelques octets en réorganisant les instructions de boucle:
la source
Perl -
9564 octetsProfite de ce
\u
fait que le caractère suivant est imprimé en majuscule dans Perl.Merci à manatwork d’avoir sauvé 31 octets et de les avoir réparés (mon code précédent ne fonctionnait pas.)
la source
\u
semble fonctionner dans un exemple séparé, mais pas dans votre code. :( Tous les caractères sont restés en minuscules. Pourriez-vous nous montrer comment votre code doit être exécuté? (Je l'ai mis dans un fichier puis appelé en luiperl
passant le nom du fichier, pas de commutateurs.) Au fait, j'utiliseperl
5.20.2.\u
est suivie de la lettre à transformer en chaîne littérale:for$c(0..50){$n=1;print map{++$n==27-abs$c-25?"\u$_":$_}a..z,$/}
q (37 caractères)
Une première coupe
la source
@[.Q.a;;upper]@'x,1_reverse x:til 26
pour 36 octets . Ou@[.Q.a;;.q.upper]@'x,1_|x:!26
pour 29 octets dans K4.