Compte tenu d' une chaîne d'entrée, la sortie de cette chaîne avec toutes les voyelles a
, e
, i
, o
et u
troqué au hasard entre eux.
Par exemple, dans la chaîne this is a test
, il y a 4 voyelles: [i, i, a, e]
. Un brassage valide de ces voyelles pourrait [a, i, e, i]
donc donner la sortie thas is e tist
.
À propos du mélange
Tous les remaniements seront également probables si nous considérons que les voyelles égales sont distinctes . Pour l'exemple ci-dessus, ces 24 mélanges sont possibles:
[i 1 , i 2 , a, e] [i 1 , i 2 , e, a] [i 1 , a, i 2 , e] [i 1 , a, e, i 2 ] [i 1 , e, i 2 , a] [i 1 , e, a, i 2 ] [i 2 , i 1 , a, e] [i 2 , i 1 , e, a] [i 2 , a, i 1 , e] [i 2 , a, e, i 1 ] [i 2 , e, i 1 , a] [i 2 , e, a, i 1 ] [a, i 1 , i 2 , e] [a, i 1 , e, i 2 ] [a, i 2 , i 1 , e] [a, i 2 , e, i 1 ] [a, e, i 1 , i 2 ] [a, e, i 2 , i 1 ] [e, i 1 , i 2 , a] [e, i 1 , a, i 2 ] [e, i 2 , i 1 , a] [e, i 2 , a, i 1 ] [e, a, i 1 , i 2 ] [e, a, i 2 , i 1 ]
Chacun devrait être tout aussi probable.
Vous ne pouvez pas essayer de mélanger au hasard toute la chaîne avant d'en trouver une où toutes les voyelles sont au bon endroit. En bref, le temps d'exécution de votre code doit être constant si l'entrée est constante.
Entrées et sorties
Vous pouvez supposer que toutes les lettres de l'entrée seront en minuscule ou en majuscule. Vous pouvez également prendre en charge des boîtiers mixtes, bien que cela ne vous donne aucun bonus.
L'entrée consistera toujours en caractères ASCII imprimables. Tous les caractères qui sont dans l'entrée doivent être dans la sortie, seules les voyelles doivent être mélangées et rien d'autre.
L'entrée peut être vide. Rien ne garantit que l'entrée contiendra au moins une voyelle ou au moins une non-voyelle.
Vous pouvez prendre l’entrée from
STDIN
, en tant que paramètre de fonction ou quelque chose de similaire.Vous pouvez imprimer la sortie dans
STDOUT
, la renvoyer depuis une fonction ou quelque chose de similaire.
Cas de test
La première ligne est l'entrée donnée. La deuxième ligne est l’une des sorties possibles.
<empty string>
<empty string>
a
a
cwm
cwm
the quick brown fox jumps over the lazy dog.
tho qeuck brewn fax jumps ovir the lozy dog.
abcdefghijklmnopqrstuvwxyz
abcdefghujklmnipqrstovwxyz
programming puzzles & code golf
pregromming pezzlos & coda gulf
fatalize
fitaleza
martin ender
mirten ander
Notation
C’est le code-golf , mais il faut que ce soit en un rien de temps .
la source
y
voyelle ..;)y
une voyelle, mais le dernier défi pour lequel j’ai dit qu’ily
s’agissait d’une voyelle s’est demandé pourquoi j’avais choisi cela!Réponses:
Gelée , 15 octets
Essayez-le en ligne!
Comment ça marche
la source
/usr/share/dict/words
depuis mon ordinateur et je l' ai inclus dans l'interpréteur Jelly.R,
9291Je ne peux pas encore commenter, alors j'ajoute ma propre réponse, bien que très similaire à la réponse de @ Andreï Kostyrka (croyez-le ou non, mais venez de manière indépendante).
Ungolfed
Un octet enregistré grâce à @Vlo
la source
s=strsplit(readline(),"")[[1]];s[v]=sample(s[v<-s%in%c("a","e","i","o","u")]);cat(s,sep="")
el()
place de[[1]]
.R,
999889 octetsSemble être la première solution lisible par l'homme! Merci à Giuseppe d’ avoir économisé 9 octets!
Cas de test:
On dirait qu'il n'y a aucun moyen de faire une affectation de variable interne (à l'intérieur, comme,
cat
), et encore une fois, certaines personnes vont prouver que je me trompe ...la source
letters[c(1,5,9,15,21)]
est un octet plus long, et OEIS A161536 et A215721 semblent être d'aucune aide non plus.z=grepl("[aeiou]",x)
plus court?CJam, 23 octets
Essayez-le en ligne!
Explication
la source
05AB1E , 17 octets
Explication
Essayez-le en ligne!
la source
Python 3, 109 octets
Ne supporte que les voyelles minuscules.
Merci à @Alissa pour avoir sauvegardé un octet supplémentaire.
Ideone ça!
la source
a.pop(random.randrange(0,len(a)))
au lieu de remuer unTSQL, 275 octets
Golfé:
Ungolfed:
Violon
la source
Perl, 38 octets
Inclut +1 pour
-p
Exécuter avec la phrase sur STDIN
vawols.pl
:la source
Java 7,
243241 octetsOui, cela peut probablement être un peu joué au golf, mais Java n’a pas d’intégration pratique pour cet afaik .. De plus, j’ai un peu oublié la variante codegolfed array-variant pour
Collections.shuffle
..Ungolfed & cas de test:
Essayez ici.
Sortie possible:
la source
i
dans la deuxième boucle?Arrays.shuffle
motivation m'a arrêté là ...import java.util.*;String c(char[]z){List l=new ArrayList();int i=0,j=z.length;for(;i<j;i++)if("aeiou".indexOf(z[i])>=0){l.add(z[i]);z[i]=0;}Collections.shuffle(l);String r="";for(i=0;i<j;i++)r+=z[i]<1?(char)l.remove(0):z[i];return r;}
Perl 6 , 65 octets
Fonction anonyme. Suppose une entrée en minuscule.
( essayez-le en ligne )
la source
Ruby 45 + 1 = 46 octets
+1 octet pour le
-p
drapeaula source
Brachylog , 39 octets
Essayez-le en ligne!
Explication
Prédicat principal:
Prédicat 1:
Prédicat 2:
la source
Javascript (ES6),
7876 octets2 octets sauvés grâce à apsillers
Version alternative proposée par apsillers (76 octets également)
Tester
la source
l=...
complètement et utilisez la fonction liée[].pop.bind(s.match(r).sort(_=>Math.random()-.5)))
comme second argumentreplace
(au lieu d’une fonction flèche). Peut-être y at-il une amélioration à trouver dans cette voie, mais je ne l’ai pas encore trouvée. Si vous utilisiez un langage JS-superset doté de l'opérateur bind::
, je pense que vous pourriez le faire(s.match(r).sort(_=>Math.random()-.5)))::pop
.MATL , 15 octets
Essayez-le en ligne!
Explication
la source
Japt v2.0a0,
14 à13 octetsL'essayer
Explication
la source
Pyth, 26 octets
Un programme qui prend en entrée une chaîne entre guillemets et imprime la chaîne mélangée.
Essayez-le en ligne
Comment ça marche
la source
PHP,
144129 octetsUtilisation de la minuscule
Explication:
la source
En fait, 24 octets
Essayez-le en ligne!
Explication:
la source
Bash, 75 octets
Prend la chaîne en argument et affiche le résultat sur stdout.
Par exemple
empreintes
la source
Bash, 89
Suppose que toutes les entrées sont en minuscules.
la source
PowerShell v3 +,
15599 octetsGros accessoires à @ Ben Owen pour le golf de 56 octets
Prend les entrées
$n
, attend toutes les minuscules, les jette immédiatement comme unchar
tableau.Nous tuyau dans une
Where-Object
clause pour retirer les éléments qui-match
une voyelle, les conduit àSort-Object
avec{Get-Random}
le mécanisme de tri. AppelerGet-Random
sans qualificatifs renverra un entier compris entre0
et[int32]::MaxValue
- c'est-à-dire, attribue des pondérations aléatoires à chaque élément à la volée. Nous stockons les voyelles aléatoires dans$a
.Enfin, nous passons en boucle
$n
. Pour chaque élément,|%{...}
si le caractère actuel est quelque part-in
$a
, nous sortons l'élément suivant$a
, en post-incrémentant$i
pour la prochaine fois. Sinon, nous sortons le caractère actuel. Tout cela est encapsulé entre parenthèses et-join
édité ensemble dans une chaîne. Cette chaîne est laissée sur le pipeline et la sortie est implicite à la fin du programme.Cas de test
la source
$n
les caractères de chaque voyelle et en faisant correspondre chaque voyelle pour afficher lechar
tableau de voyelles à la place. Quelque chose comme:$a=[char[]]$n|?{$_-match'[aeiou]'}|sort{random}
$a
.Python 3, 106 octets
Minuscule seulement.
la source
PHP> = 5.3 ,
139136 octets (et aucune erreur renvoyée)la source
K (oK) , 29 octets
Solution:
Essayez-le en ligne!
Exemples:
Explication:
Trouvez les emplacements des voyelles et remplacez-les par les voyelles dessinées dans un ordre aléatoire.
la source
APL (Dyalog Unicode) , 21 octets
Essayez-le en ligne!
Assume en majuscule.
la source
{⍵∊'AEIOU'}
→∊∘'AEIOU'
fonctionnerait?({⍵[?⍨≢⍵]}@∊)∘'AEIOU'
.Kotlin ,
122118 octetsEssayez-le en ligne!
la source