Inspiré par un meme que j'ai vu plus tôt aujourd'hui.
Description du challenge
Considérons une grille infinie alphabet:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ
...
Prenez un mot ( CODEGOLF
dans cet exemple) et faites-en une sous-séquence de la grille, en remplaçant les lettres inutilisées par un espace et en supprimant les lettres à la fin de la grille infinie:
C O
DE G O
L
F
Exemples
STACKEXCHANGE
ST
A C K
E X
C H
A N
G
E
ZYXWVUTSRQPONMLKJIHGFEDCBA
Z
Y
X
W
V
U
T
S
R
Q
P
O
N
M
L
K
J
I
H
G
F
E
D
C
B
A
F
F
ANTIDISESTABLISHMENTARIANISM
A N T
I
D I S
E ST
AB L
I S
H M
E N T
A R
I
A N
I S
M
Remarques
- Les espaces de fuite sont autorisés.
- Vous n'avez pas besoin de remplir
la dernièreligne avec des espaces. Par exemple, si l'entrée estABC
, vous pouvez générer uniquementABC
sans 23 espaces de fin. - Vous pouvez supposer que l'entrée correspondra à
[A-Z]+
regex. - Vous pouvez également utiliser un alphabet minuscule, auquel cas la sortie correspondra
[a-z]+
. - Vous devez utiliser une nouvelle ligne (
\n
,\r\n
ou équivalent) à des lignes séparées, qui est une liste de chaînes n'est pas un format de sortie approprié. - Ceci est un défi de code-golf , alors faites votre code le plus court possible!
BALLOON
(deux caractères adjacents identiques).Réponses:
Coque , 15 octets
Essayez-le en ligne!
Explication
la source
Java 10,
161159152 octets-2 octets grâce à @Nevay .
-7 octets imprimant directement au lieu de renvoyer une chaîne et de convertir en Java 10.
Explication: "
Essayez ici.
La première partie de la méthode divise le mot d'entrée en plusieurs parties avec un délimiteur.
Par exemple:
CODEGOLF
→CO;DEGO;L;F
ouBALLOON
→B;AL;LO;O;N
.La deuxième partie boucle sur ces parties et utilise l'expression régulière
[^...]
pour remplacer tout ce qui ne correspond pas à un espace.Par exemple,
.replaceAll("[^CO]"," ")
quitte leC
, etO
, et remplace tout le reste par un espace.la source
B;AL;LO;O;N
?for(char c:s)x+=p<(p=c)?c:";"+c;
.C (gcc) , 69 octets
Essayez-le en ligne!
la source
Perl 5 , 44 octets
Code 40 octets + 4 pour
-lF
.Essayez-le en ligne!
la source
Python 2 , 92 octets
Essayez-le en ligne!
la source
JavaScript (ES6), 79
Modifier En tant que leader nouvelle ligne est acceptée, je peux économiser 2 octets
Pour 1 octet de plus, je peux accepter les entrées minuscules ou majuscules:
Moins joué au golf
Tester
la source
\n
avec une nouvelle ligne littérale à l'intérieur des backticks pour -1 octet.MATL ,
2423 octetsUtilise des lettres minuscules.
Essayez-le sur MATL Online!
Explication
la source
Japt ,
1816 octets-2 octets grâce à @Shaggy
Entrée en majuscule seulement.
Essayez-le en ligne!
Explication
Basculer vers des variables alternatives, où
B
est l'alphabet majuscule.Fractionner la chaîne d'entrée entre des caractères lorsque le premier est supérieur ou égal à (
¨
) le second.Mappez chaque partition par la fonction, où
X
est la partition actuelle.Mappez chaque caractère de l'alphabet majuscule sur le suivant, avec
Z
la lettre actuelle.Supprime toutes les lettres de la partition actuelle de la lettre actuelle. Si la lettre en cours est contenue dans la partition en cours, il en résulte une chaîne vide.
Si cela est vrai (pas une chaîne vide), retournez un espace (
S
), sinon, retournez la lettre courante.Joignez le résultat de la ligne précédente avec des nouvelles lignes et imprimez le résultat.
la source
r"[^{Z}]"S
semblent un peu ridicules, mais je ne trouve pas de meilleur moyen non plus ...kX
!kX ?S:Z
pouroX ªS
économiser deux octetsPyth, 18 octets
Essayez ici.
Nouvelle ligne principale dans la sortie, alphabet minuscule.
la source
Gelée , 19 octets
Essayez-le en ligne!
la source
OI<1®;
->>2\0;
pour économiser un octet (j'ai en fait fait aussi>2\0;œṗµØAf€ȯ€⁶µ€Y
pour 18, ce que je trouve personnellement plus facile à analyser)BALLOON
quelque chose.<2\1;¬
; tant pis.C (gcc),
9163 octets-28 grâce à ASCII uniquement
Essayez-le en ligne!
Précédent:
Oui, il y a une solution plus courte, mais j'ai remarqué après avoir écrit celle-ci ... Essayez-la en ligne!
la source
Mathematica, 101 octets
Split
l’entrée dans des séquences de lettres strictement croissantes, en comparant des lettres adjacentes avecOrder
. SiOrder[x,y] == 1
, alorsx
précèdey
dans l'alphabet et peut donc apparaître sur la même ligne.Pour chaque séquence de lettres, créez un motif pour faire correspondre les chaînes
Except
de ces lettres;#|##
est un raccourci pourAlternatives
. Remplacez les lettresAlphabet
qui correspondent au motif par des espaces.Illustration des étapes intermédiaires:
la source
Golfscript,
2221 octetsEssayez-le en ligne!
-1 octet grâce à une redéfinition finale de l’
n
intégré.Explication (avec une version légèrement différente):
la source
Retina , 80 octets
Essayez-le en ligne!
Il y a toujours exactement une nouvelle ligne principale. Le code préfixe légèrement le mot avec l'alphabet et un marqueur (point-virgule). Il déplace ensuite le marqueur jusqu'à la première lettre du mot, tout en modifiant toutes les autres lettres, il passe aux espaces. Il supprime également la première lettre du mot. Il répète ceci jusqu'à ce que la première lettre du mot ne soit plus après le marqueur. Ensuite, il efface ce marqueur et le reste de l'alphabet et le remplace par une nouvelle ligne et l'alphabet par un marqueur à nouveau. Il répète cette opération jusqu'à ce que le mot saisi soit vide, puis nettoie le dernier alphabet et le dernier marqueur, en laissant la sortie souhaitée.
la source
05AB1E , 18 octets
Essayez-le en ligne!
Problème rencontré avec 05AB1E
ć
(extrait 1) en laissant une chaîne / liste vide sur la pile après l'extraction du dernier élément. Si ce n’était pas le cas, cette solution serait plus courte de 1 à 2 octets.la source
ð,
signifie "imprimer un espace et une nouvelle ligne".Retina ,
130126 octetsEssayez-le en ligne! Edit: 4 octets enregistrés à l’aide du générateur d’alphabet de @ MartinEnder. Explication:
Ajouter l'alphabet.
Alignez autant de lettres que possible avec leur position dans l'alphabet.
Commencez une nouvelle ligne avant la première lettre qui n'a pas pu être alignée.
Supprimez l'alphabet, puis recommencez jusqu'à ce qu'il n'y ait plus de lettres mal alignées.
la source
q / kdb + ,
4845 octetsSolution:
Essayez-le en ligne!
Remarque: Link est relié à un port K (oK) de cette solution car il n'y a pas de TIO pour q / kdb +.
Exemples:
Explication:
Q est interprété de droite à gauche. La solution est divisée en deux parties. Commencez par diviser la chaîne lorsque le caractère suivant est inférieur ou égal à la valeur actuelle:
"STACKEXCHANGE"
->"ST","ACK","EX","CH","AN","G","E"
Prenez ensuite une chaîne de 26 espaces vierges et appliquez-la aux index où l'entrée apparaît dans l'alphabet, puis imprimez sur la sortie standard.
"__________________________"
->__________________ST______
Panne:
Remarques:
la source
Powershell,
70 à63 octets-7 octets merci @Veskah
Essayez-le en ligne!
Explication:
Pour chaque caractère de l'argument splatté:
$x
et$x
valeur vide (rv
alias pour Remove-Variable ), si le code du caractère en cours est inférieur ou équivalent (-le
) à un code du caractère précédent.$x
, stockez-le dans$x
. En outre, il rafraîchit une valeur de caractère précédente.Sortie en dernier
$x
.la source
|% *ht
pour sauver quelques octets, mais on dirait qu'il a fait ses frais.Gelée ,
2421 octets3 octets grâce à Erik the Outgolfer.
Essayez-le en ligne!
la source
SOGL V0.12 , 22 octets
Essayez-le ici!
la source
JavaScript (ES6), 87 octets
Accepte les majuscules ou les minuscules. La sortie correspond à la casse de l'entrée.
Des tests
Afficher l'extrait de code
la source
Haskell,
81 7473 octetsSauvé 1 octet grâce à Laikoni !
Essayez-le en ligne.
Optimisations de Haskell Hugs
L'interpréteur Hugs me permet de sauvegarder un octet de plus en faisant
(!cycle$['A'..'Z']++"\n")
plutôt(!cycle(['A'..'Z']++"\n"))
que :, mais GHC n'aime pas le précédent . (Ceci est maintenant obsolète; Laikoni a déjà réécrit cette ligne de manière à économiser 1 octet.)Apparemment, Hugs n’exige pas non plus de parenthèses autour de la liste des motifs de liste, ce qui me permet de sauvegarder deux octets supplémentaires allant de:
q@(w:y)!(x:z)
àq@(w:y)!x:z
.la source
a=['A'..'Z']++'\n':a;(!a)
. Il est intéressant de noter que Hugs semble avoir des règles plus laxistes.a=...:a
truc. Merci!Python 3 ,
8785 octetsEssayez-le en ligne!
la source
J , 39 octets
Essayez-le en ligne!
la source
Charbon de bois , 15 octets
Essayez-le en ligne! Le lien est vers la version verbeuse du code. Explication:
la source
APL (Dyalog Classic) , 20 octets
Essayez-le en ligne!
la source
K (ngn / k) ,
2928 octetsEssayez-le en ligne!
{
}
fonction avec argumentx
>':x
pour chaque personnage, est-il supérieur au précédent?~
nier&
où (à quels indices) avons-nous vrai(
)_x
couperx
à ces index, retourne une liste de chaînes{
}'
pour chacune de ces chaînesL'alphabet anglais
x?
trouver l'index de la première occurrence de chaque lettre enx
, utilisez0N
(une valeur "nulle" spéciale) si non trouvéx@
indexx
avec ça; indexation avec des0N
retours" "
, nous obtenons donc une chaîne de longueur 26 dans laquelle les lettresx
sont à leur position alphabétique et tout le reste est constitué d'espacesla source
R ,
129117 octetsEssayez-le en ligne!
Explication (non golfée):
la source
R , 95 octets
Parcourez simplement l'alphabet majuscule de manière répétée en faisant avancer d'un compteur de 1 si vous rencontrez la lettre dans la position de compteur du mot et en imprimant la lettre, sinon un espace.
Essayez-le en ligne!
la source
GolfScript , 37 octets
Essayez-le en ligne!
J'ai fait un Golfscript sous un nom différent, mais la sortie était incorrecte.
la source