Vous devez écrire un programme ou une fonction qui crée une chaîne "en escalier". Voici comment vous "escaladez" une chaîne:
Pour chaque caractère de la chaîne:
Si le caractère est une voyelle en majuscule ou en minuscule, n'incluant pas «y», sortez-la puis déplacez le reste de la chaîne vers le haut d' une colonne.
Si le caractère est un espace ou une tabulation, sortez-le puis déplacez le reste de la chaîne dans une colonne.
Si le caractère n'est ni l'un ni l'autre, sortez-le normalement.
IO peut être dans n'importe quel format raisonnable. L'entrée ne contiendra aucune nouvelle ligne. Si vous le souhaitez, vous pouvez supprimer tout espace de fin.
Si vous choisissez de renvoyer la chaîne, plutôt que de l'imprimer, veuillez également inclure un programme court qui imprimera votre chaîne afin qu'elle puisse être visualisée. Ce n'est pas obligatoire, et cela n'ira pas vers votre nombre d'octets. C'est juste une commodité pour les utilisateurs qui ne comprennent pas le golf ou les esolangs (comme moi) pour pouvoir vérifier la sortie ou bricoler avec le code.
Exemple d'E / S:
Sortie pour "bcdef ghijkl":
f jkl
bcde ghi
Sortie pour "Programmation de puzzles et de code-golf":
lf
-Go
s nd de
ng zzle A Co
mmi Pu
gra
Pro
Sortie pour "Abcdefghijklmnopqrstuvwxyz":
vwxyz
pqrstu
jklmno
fghi
bcde
A
Comme d'habitude, c'est le code-golf, donc la réponse la plus courte en octets l'emporte.
Réponses:
MATL ,
3837 octetsEssayez-le en ligne!
Explication
Pour chaque caractère, le code calcule sa position verticale, mesurée par le haut (0 est le plus élevé). Il construit ensuite la chaîne de sortie transposée: chaque caractère est sur une ligne avec autant d'espaces de tête que sa position verticale l'indique. Ensuite, toutes les lignes sont contaténées dans un tableau de caractères 2D, qui est finalement transposé et affiché.
la source
Pyth, 63 octets
Les espaces au milieu sont en fait un caractère de tabulation unique, mais StackExchange le rend comme quatre espaces.
Essayez-le en ligne!
la source
Python 2,
141137 octetsla source
JavaScript (Firefox 30-57), 151 octets
Où
\n
représente le caractère de nouvelle ligne littéral.la source
/n
par ``C, 180 octets
Non golfé:
la source
Perl, 110 octets (script de 108 octets + drapeaux de 2 octets)
Exécutez avec
perl -nl script.pl
, l'entrée est sur stdin, la sortie est sur stdout.Désobfusqué
J'ai renommé les variables de manière plus sensible, rendu le code
use strict
etuse warnings
conforme, et rendu explicite une grande partie de la magie de Perl automatiquement.Ceci est simplement exécuté comme
perl script.pl
, car il reproduit les effets des-nl
indicateurs à l'intérieur du script.la source
JavaScript (ES6), 133
Moins golfé
Tester
la source
Haskell (dans le terminal ANSI), 75 octets
Exemple d'utilisation:
putStr $ ("\27[2J"++).(h=<<) $ "bcdef ghijkl"
Cela utilise des codes d'échappement ANSI pour déplacer le curseur de haut en bas.
la source
C,
173160156155 155 octetsEdit: idée empruntée d'utiliser strchr de @mIllIbyte pour raser 13 octets
Edit2: rationalisé les comparaisons min / max, -4 octets
Edit3: c peut avoir n'importe quelle valeur pour commencer -> dans main (c) à la place, -1 octet
Edit4: Ajout d'ungolf / explication
Non golfé et expliqué:
la source