Esse desafio é baseado e contém casos de teste de um curso de programação que fiz na Universidade de Aalto. O material é usado com permissão.
Dois anos e meio atrás, havia um desafio sobre os Spoerisms em inglês . No entanto, em Spoerisms finlandeses são muito mais complicados.
Spoonerisms em finlandês
Em finlandês, as vogais são aeiouyäö
e as consoantes são bcdfghjklmnpqrstvwxz
. ( å
é tecnicamente parte do finlandês, mas não é considerado aqui.)
Os colheristas mais básicos usam apenas a primeira vogal de cada palavra e as consoantes que as precedem e trocam as partes:
henri kontinen -> konri hentinen
tarja halonen -> harja talonen
frakki kontti -> kokki frantti
ovi kello -> kevi ollo
Vogais longas
Algumas palavras contêm duas da mesma vogal consecutiva. Nesses casos, o par de vogais deve ser trocado pela primeira vogal da outra palavra, encurtando ou alongando vogais para manter o mesmo comprimento.
haamu kontti -> koomu hantti
kisko kaappi -> kasko kiippi
No caso de duas vogais consecutivas diferentes, isso não se aplica:
hauva kontti -> kouva hantti
puoskari kontti -> kooskari puntti
Três ou mais da mesma letra consecutiva não aparecerão na entrada.
Harmonia da vogal
O finlandês tem essa coisa adorável chamada harmonia de vogais . Basicamente, isso significa que as vogais traseiras aou
e vogais frontais äöy
não devem aparecer na mesma palavra.
Quando trocar dianteiras ou traseiras vogais em uma palavra, todas as vogais de outro tipo no resto da palavra deve ser alterada para coincidir com o novo início da palavra ( a <-> ä
, o <-> ö
, u <-> y
):
köyhä kontti -> kouha köntti
hauva läähättää -> läyvä haahattaa
e
e i
são neutros e podem aparecer com todas as outras letras; trocá-los por uma palavra não deve causar alterações no restante da palavra.
Casos especiais
A harmonia da vogal não se aplica a algumas palavras, incluindo muitas palavras de empréstimo e palavras compostas. Esses casos não precisam ser tratados "corretamente".
Desafio
Dadas duas palavras, produza as palavras misturadas.
As palavras de entrada conterão apenas os caracteres a-z
e äö
. Você pode optar por usar maiúsculas ou minúsculas, mas sua escolha deve ser consistente entre as palavras e a entrada / saída.
A E / S pode ser feita em qualquer formato conveniente . (As palavras devem ser consideradas cadeias ou matrizes de caracteres.)
Isso é código-golfe , então a solução mais curta em bytes vence.
Casos de teste
U+0308 COMBINING DIAERESIS
deve lidar U+00E4 LATIN SMALL LETTER A WITH DIAERESIS
muito bem.)
e
e i
são neutros, são fihus keksy
, huvu lehy
e lesmä prihti
respostas aceitáveis para kehys fiksu
, levy huhu
e prisma lehti
, respectivamente?
puoskari äyskäri --> äöskäri puuskari --> puoskari ääskäri
.