Dada una cadena de entrada, de salida que cadena con todas las vocales a
, e
, i
, o
y u
cambió al azar entre sí.
Por ejemplo, en la cadena this is a test
, hay 4 vocales: [i, i, a, e]
. Por lo tanto, una combinación válida de esas vocales podría estar [a, i, e, i]
produciendo la salida thas is e tist
.
Sobre barajar
Todas las mezclas serán igualmente probables si consideramos que las vocales iguales son distintas . Para el ejemplo anterior, esos 24 shuffles son posibles:
[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 ]
Cada uno debe ser igualmente probable.
No puede intentar barajar aleatoriamente la cadena completa hasta encontrar una donde todas las vocales estén en el lugar correcto. En resumen, el tiempo de ejecución de su código será constante si la entrada es constante.
Entradas y salidas
Puede suponer que todas las letras en la entrada serán minúsculas o mayúsculas. También puede admitir carcasa mixta, aunque esto no le dará ninguna bonificación.
La entrada siempre consistirá en caracteres ASCII imprimibles. Todos los caracteres que están en la entrada deben estar en la salida, solo las vocales deben mezclarse y nada más.
La entrada puede estar vacía. No hay garantía de que la entrada contendrá al menos una vocal o al menos una no vocal.
Puede tomar la entrada de
STDIN
, como parámetro de función, o algo similar.Puede imprimir el resultado
STDOUT
, devolverlo desde una función o algo similar.
Casos de prueba
La primera línea es la entrada dada. La segunda línea es una de las salidas posibles.
<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
Tanteo
Este es el código de golf , en cambio, la lista de camisas se gana en bytes .
y
una vocal, pero el último desafío donde dije y
fue una vocal ¡Me preguntaron por qué elegí eso!
y
vocales ...;)