Remarque: le titre a été mal orthographié intentionnellement.
Étant donné une chaîne s, permutez les premières voyelles de tous les 2 mots. Pour ce défi, y est considéré comme une voyelle.
Par exemple, étant donné une entrée de "grand jour monsieur":
1. Input: "great day sir"
2. Identify pairs of words: "[great day] [sir]" (No word for sir to pair with)
3. Identify the first vowel runs in each word: "[gr[ea]t d[ay]] [s[i]r]"
4. Swap the vowel runs in each pair: "[gr[ay]t d[ea]] [s[i]r]"
5. Return/print: "grayt dea sir"
Lorsqu'il y a des pistes de voyelles de différentes longueurs, vous permutez toujours toutes les pistes. Lorsqu'un mot comporte plus d'une voyelle, vous n'échangez toujours que le premier. Lorsque le premier ou le deuxième mot d'une paire de mots n'a pas de voyelle, vous n'échangez pas les voyelles pour ces mots.
Vous pouvez supposer que l'entrée se compose uniquement d'un cas de lettres alphabétiques et de l'espace littéral ou d'un autre délimiteur constant.
Les méthodes standard d'E / S, les échappatoires standard s'appliquent. Les whatsvers de tête / arrière sont corrects.
Cas de test:
Input -> Output
"great day sir" -> "grayt dea sir"
"ppcg is the best" -> "ppcg is the best" (When there is no vowel to swap, don't swap vowels."
"this is a test case" -> "this is e tast case"
"loooooooooooooong word" -> "long woooooooooooooord"
"great night" -> "grit neaght"
"anything goes" -> "oenything gas"
"qwrtpsdfghjklzxcvbnm aaaaaaaa hi there" -> "qwrtpsdfghjklzxcvbnm aaaaaaaa he thire"
"this is a long test case in case you could not tell" -> "this is o lang tast cese an cise ou cyould net toll"
ppcg is awesome
devenirppcg is awesome
ouppcg as iwesome
?this is a long test case in case you could not tell
devrait êtrethis is o lang tast cese an cise ou cyould net toll
, car la voyelle fonctionneyou
etou
serait échangée.Réponses:
V ,
42, 41 octetsEssayez-le en ligne!
Hexdump:
Explication:
Cela mettra tous les groupes de deux mots sur leur propre ligne, par exemple:
Maintenant, nous exécutons une magie regex fantaisie:
la source
Japt ,
3937 octetsIls ont dit que ce serait moche, mais je n'ai pas écouté ... et c'était:
Testez-le en ligne!
Explication
la source
JavaScript (ES6),
6210698101 octetsAfficher l'extrait de code
la source
Rétine , 65 octets
Essayez-le en ligne! Comprend des cas de test. Je voulais utiliser une référence de groupe conditionnelle mais je ne pouvais pas la faire fonctionner en 66 octets et encore moins 65 ou moins.
la source
Rétine , 50 octets
Essayez-le en ligne!
−2 octets grâce à Martin.
¶
c'est la nouvelle ligne). Cela nous permet d'utiliser.*
dans une paire de mots.la source
[aeiouy]+
mais je n'ai pas pu obtenir quelque chose d'économique.[aeiouy]
duplication, mais je ne peux pas la jouer. Je pense que cela pourrait bien fonctionner avec votre suggestion: tio.run/…Python 2 , 148 octets
Essayez-le en ligne!
Le golf de code devient addictif!
la source
Haskell ,
177173171169 169 octetsEssayez-le en ligne!
Il s'agit d'un raccourcissement direct de la solution naïve suivante, il devrait donc y avoir quelque chose de bien mieux ici:
la source
Java (OpenJDK 8) ,
363304 + 25 octets-34 octets grâce à @KevinCruijssen
Golfé:
Essayez-le en ligne!
Non golfé:
la source
(l)->
àl->
). Vous pouvez ajouterimport java.util.regex.*;
au nombre d'octets et supprimer tous les autresjava.util.regex.
. Vous pouvez supprimer les parenthèses dans l'expression régulière ("([aeiouy]+)"
->"[aeiouy]+"
). Et vous pouvez passerString[]s=l.split(" ");
àString s[]=l.split(" "),a,b;
, puis vous pouvez supprimer l'String
intérieur de la boucle for; Et vous pouvez changerString.join(" ",s);
pourl.join(" ",s);
. Voici tout cela combiné. [ 329 octets ]Perl, 58 octets
Code de 57 octets + 1 pour
-p
.-2 octets grâce à @Dada !
Essayez-le en ligne!
la source
?
et en le stockant([aeiouy]+)
dans une variable: essayez-le en ligne!Ruby, 87 + 1 = 88 octets
Utilise le
-p
drapeau.Essayez-le en ligne!
la source
Python 3 ,
198196192 192 octetsif(m and n)
si m et n & ont supprimé r indésirable pour la chaîne d'expression régulière, index i à partir de 1 au lieu de 0Essayez-le en ligne!
la source
i+1<len(a)
eni<=len(a)
, et le troisième en changeantif(m and n)
enif m and n
.i+1<len(a)
ne peut pas être changé pouri<=len(a)
ou bien il va essayer d'évaluer para[j]
exemplea[i+1]
pouri=len(a)
et provoquer uneindex out of range
erreur:i<len(a)+1
, oups!