Contribution
Une chaîne de caractères ASCII imprimables, par exemple:
This is an example string.
Sortie
Pour chaque consonne ( BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz
) qui n'est pas suivie d'une voyelle ( AEIOUaeiou
), ajoutez la dernière voyelle avant, en minuscules.
Les consonnes avant la première voyelle sont laissées telles quelles :
Thisi isi ana examapale seterinigi.
Cas de test
AN EXAMPLE WITH A LOT UPPERCASE (plus some lowercase)
=> ANa EXAMaPaLE WITiHi A LOTo UPuPEReCASE (pelusu some lowerecase)
And here comes a **TEST** case with 10% symbols/numbers(#)!
=> Anada here comese a **TESeTe** case witihi 10% siyimiboloso/numuberese(#)!
This is an example string.
=> Thisi isi ana examapale seterinigi.
abcdefghijklmnopqrstuvwxyz
=> abacadefegehijikiliminopoqorosotuvuwuxuyuzu
A pnm bnn
=> A panama banana
Tell me if you need more test cases!
=> Telele me ifi you neede more tesete casese!
Notation
Comme il s'agit de code-golf , la réponse avec le nombre d'octets le plus bas dans chaque langue l' emporte (aucune réponse ne sera acceptée).
A pnm bnn
!Réponses:
Rétine , 48 octets
Essayez-le en ligne! Explication: l'antichambre recherche un point non suivi par une voyelle, tandis que l'antenne recherche une consonne immédiatement précédente et une voyelle précédente, qui est ensuite insérée en minuscules.
la source
JavaScript (ES6),
108105 octets(Enregistré 3 octets grâce à @Shaggy.)
Recherche des voyelles ou des consonnes sans voyelle suivante:
(Nous n'avons pas besoin de rechercher explicitement les consonnes, car les voyelles sont exclues en fonction du
/[aeiou]|...
.)Les voyelles sont stockées dans
v
, et les consonnes sans voyelle suivante ont étév
insérées:(S'il
r[1]
existe, nous avons apparié une consonne plus une non-voyelle.)Si rien n'a été changé, nous renvoyons l'entrée. Sinon, nous récursions sur la chaîne remplacée.
Afficher l'extrait de code
la source
s=>s.replace(/[aeiou][^a-z]*([a-z](?![aeiou]))+/gi,s=>s.replace(/(?!^)./g,a=>a+s[0].toLowerCase()))
je ne peux pas avoir de problèmes avec les séquences de non-lettres(s+=' ')
devrait économiser quelques octets.Python 2 ,
134119 octetsEssayez-le en ligne!
EDIT: 15 octets thx à Lynn
la source
<vowels>.count
.ML standard ,
225223 octetsEssayez-le en ligne!
Moins golfé:
Essayez-le en ligne!
la source
it
et l'utilisation du$
nom de variable.it
également, mais je n'ai pas encore réussi à le faire.sed 4.2.2 , 64 octets
Essayez-le en ligne!
la source
Perl 5,
686759 octetsVoici un excellent exemple de l'utilité de
\K
, et je ne peux pas croire que je ne connaissais pas cette fonctionnalité avant que Dom Hastings ne le souligne.Je n'ai pas pu obtenir le bon comportement en utilisant simplement
s///g
, donc une boucle réelle semble nécessaire. (Il est possible que la bonne utilisation d'une assertion de derrière puisse fonctionner sans explicitewhile
- mais je ne l'ai pas trouvée.)la source
[aeiou])
variable: essayez-le en ligne!JavaScript ES6, 115 octets
Économise 8 octets grâce à @ETHProductions
J'ai réussi à le gonfler davantage dans le processus de golf O_o mais cela corrige également un bug
la source
JavaScript,
8882 octetsFait avec une seule expression régulière:
Version originale (88 octets):
Version mise à jour (82 octets) après avoir regardé l'expression régulière de Neil :
la source
Japt
-P
, 28 octetsEssayez-le en ligne!
Déballé et comment cela fonctionne
La
ó
fonction gagne sur tout type de regex.la source
JavaScript (Node.js) ,
146143132127125 octetsEssayez-le en ligne!
la source
Perl 6 ,
75 73 7169 octetsEssayez-le
Essayez-le
Essayez-le
Essayez-le
Étendu:
la source
Python 3 , 125 octets
Essayez-le en ligne!
Python 3.6 nous permet (ab) d'utiliser des chaînes f pour réutiliser notre ensemble de voyelles (et pour quatre autres caractères enregistrés, le début d'une classe de caractères regex inversés) à moindre coût (un
f
préfixe sur chaque chaîne, puis{v}
au besoin, au lieu de la'+v+'
vous auriez besoin avec concaténation, ou l'[^aeiouAEIOU
insérer littéralement.Le regex qui ne correspond à aucun caractère, juste une position, évite les problèmes avec les correspondances qui ne se chevauchent pas, les regex habituels et supprime la nécessité de faire référence à n'importe quelle partie de la correspondance; tout ce que nous utilisons pour l'objet de correspondance est d'obtenir l'index de tranche que nous utilisons pour trouver la voyelle précédente.
Partiellement dé-golfé, ce serait quelque chose comme:
la source
TSQL, 500 octets
La table
i
est utilisée pour l' entréela source
SWI-Prolog, 593 octets
Utilisé uniquement des prédicats intégrés (sans regex ni bibliothèque de manipulation de liste).
Usage:
la source
Haskell ,
142130 octetsEssayez-le en ligne!
L'initiale
""&
est une application partielle de la(&)
fonction définie plus tard, et est placée de manière si étrange pour que TIO compte les octets dans""&
, mais ne compte pas les octets qui, dans un programme complet, seraient nécessaires pour affecter cela à n'importe quelle valeur nommée.Moins golfé:
Il devrait vraiment y avoir un moyen de le faire de manière plus concise avec un pli au lieu de la récursivité, mais je ne pouvais pas le comprendre.
la source
f
n'apparaisse pas dans le corps: Essayez-le en ligne!v = (
et vous pouvez définirg
un opérateur d'infixe .g _""=""
en dernière position enregistre un octet:g _ x=x
(deux octets si vous passez en infixe comme le suggère Laikoni).""&
pour en faire une fonction.05AB1E , 34 octets
Essayez-le en ligne!
Je reprends cela, je ne peux que raser 3 octets de cette monstruosité ... Je pense que je pourrais raser le booléen, mais il DOIT y avoir 3 cas. 1 pour les voyelles. 1 pour les consonnes. 1 pour le cas où un chiffre / symbole existe.
la source
Powershell, 104 octets
basé sur l'expression régulière de Neil .
enregistrez-le sous
get-rememebere.ps1
. Script pour tester:la source
$t
. MetaRouge , 276 octets
Essayez-le en ligne!
Lisible:
la source
Yabasic , 180 octets
Un programme complet qui prend les entrées de STDIN et les sorties vers STDOUT
Essayez-le en ligne!
la source