この課題は、私がアールト大学で受講したプログラミングコースに基づいており、そこからのテストケースが含まれています。素材は許可を得て使用されています。
2年半前に、英語でのスプーネリズムについての挑戦がありました。ただし、フィンランドでは、スポーネリズムははるかに複雑です。
フィンランドのスプーネリズム
フィンランド語では、母音がaeiouyäö
あり、子音がありbcdfghjklmnpqrstvwxz
ます。(å
技術的にはフィンランド語の一部ですが、ここでは考慮しません。)
最も基本的なspoonerismsは、各単語の最初の母音、およびそれらに先行する子音のみを取り、部分を交換します:
henri kontinen -> konri hentinen
tarja halonen -> harja talonen
frakki kontti -> kokki frantti
ovi kello -> kevi ollo
長母音
一部の単語には、同じ連続した母音が2つ含まれています。これらの場合、長さを同じに保つために、母音ペアを他の単語の最初の母音、短縮または延長母音と交換する必要があります。
haamu kontti -> koomu hantti
kisko kaappi -> kasko kiippi
2つの異なる連続した母音の場合、これは適用されません。
hauva kontti -> kouva hantti
puoskari kontti -> kooskari puntti
3つ以上の同じ連続文字が入力に表示されません。
母音の調和
フィンランド語には、母音調和と呼ばれるこの素敵なものがあります。基本的に、後の母音 aou
と前の母音 äöy
が同じ単語に表示されないことを意味します。
ワードに前面または背面の母音を交換する場合、単語の残りの部分で他の種類のすべての母音は、言葉の新たな始まりと一致するように変更する必要があります(a <-> ä
、o <-> ö
、u <-> y
):
köyhä kontti -> kouha köntti
hauva läähättää -> läyvä haahattaa
e
そしてi
中立であり、他のすべての文字で表示されることがあります。それらを単語に入れ替えても、単語の残りの部分が変更されてはなりません。
特殊なケース
母音の調和は、多くの外来語や複合語を含む一部の単語には適用されません。これらのケースは「正しく」処理する必要はありません。
チャレンジ
2つの単語が与えられたら、spoonerised単語を出力します。
入力語には文字a-z
とのみが含まれますäö
。大文字または小文字を選択できますが、単語と入力/出力の両方で一貫性のある選択をする必要があります。
I / Oは任意の便利な形式で実行できます。(単語は文字列または文字の配列と見なされる必要があります。)
これはcode-golfであるため、バイト単位の最短ソリューションが優先されます。
テストケース
U+0308 COMBINING DIAERESIS
はU+00E4 LATIN SMALL LETTER A WITH DIAERESIS
e
とi
、中性であるfihus keksy
、huvu lehy
とlesmä prihti
の許容解答kehys fiksu
、levy huhu
およびprisma lehti
それぞれ?