Dada uma cadeia de entrada, de saída que string com todas as vogais a
, e
, i
, o
e u
trocou de forma aleatória entre si.
Por exemplo, na seqüência this is a test
, há 4 vogais: [i, i, a, e]
. Um embaralhamento válido dessas vogais poderia, [a, i, e, i]
portanto, produzir a saída thas is e tist
.
Sobre embaralhar
Todos os shuffles devem ser igualmente prováveis se considerarmos que vogais iguais são distintas . Para o exemplo acima, esses 24 shuffles são possíveis:
[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 um deve ser igualmente provável.
Você não pode tentar embaralhar aleatoriamente toda a cadeia até encontrar uma onde todas as vogais estejam no lugar certo. Em resumo, o tempo de execução do seu código deve ser constante se a entrada for constante.
Entradas e saídas
Você pode assumir que todas as letras da entrada serão minúsculas ou maiúsculas. Você também pode oferecer suporte a maiúsculas e minúsculas, embora isso não lhe dê nenhum bônus.
A entrada sempre consistirá em caracteres ASCII imprimíveis. Todos os caracteres que estão na entrada devem estar na saída, apenas as vogais devem ser embaralhadas e nada mais.
A entrada pode estar vazia. Não há garantia de que a entrada contenha pelo menos uma vogal ou pelo menos uma não vogal.
Você pode obter a entrada de
STDIN
, como um parâmetro de função, ou qualquer coisa semelhante.Você pode imprimir a saída
STDOUT
, retorná-la de uma função ou algo semelhante.
Casos de teste
A primeira linha é a entrada fornecida. A segunda linha é uma das saídas possíveis.
<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
Pontuação
Isso é código-golfe , para que usuários logistas e bytes ganhem .
y
uma vogal, mas no último desafio em que eu disse que y
era uma vogal, me perguntaram por que escolhi isso!
y
como vogal ..;)