Diese Herausforderung basiert auf und enthält Testfälle aus einem Programmierkurs, den ich an der Aalto University absolviert habe. Das Material wird mit Genehmigung verwendet.
Vor zweieinhalb Jahren gab es eine Herausforderung in Bezug auf Spoonerismen auf Englisch . In Finnland sind Spoonerismen jedoch viel komplizierter.
Spoonerisms auf Finnisch
Im Finnischen sind die Vokale aeiouyäöund die Konsonanten bcdfghjklmnpqrstvwxz. ( ågehört technisch zum Finnischen, wird hier aber nicht berücksichtigt.)
Die grundlegendsten Spoonerismen nehmen nur den ersten Vokal jedes Wortes und die ihnen vorangehenden Konsonanten und tauschen die Teile aus:
henri kontinen -> konri hentinen
tarja halonen -> harja talonen
frakki kontti -> kokki frantti
ovi kello -> kevi ollo
Lange Vokale
Einige Wörter enthalten zwei gleiche aufeinanderfolgende Vokale. In diesen Fällen muss das Vokalpaar mit dem ersten Vokal des anderen Wortes vertauscht werden, wobei die Vokale verkürzt oder verlängert werden müssen, um die Länge beizubehalten.
haamu kontti -> koomu hantti
kisko kaappi -> kasko kiippi
Bei zwei verschiedenen aufeinanderfolgenden Vokalen gilt dies nicht:
hauva kontti -> kouva hantti
puoskari kontti -> kooskari puntti
Mindestens drei gleiche aufeinanderfolgende Buchstaben werden in der Eingabe nicht angezeigt.
Vokalharmonie
Finnisch hat dieses schöne Ding namens Vokalharmonie . Grundsätzlich bedeutet dies, dass die hinteren aou und vorderen Vokale äöy nicht im selben Wort vorkommen dürfen.
Wenn der vordere oder hintere Vokale in einem Wort tauschen, alle Vokale der anderen Art in den Rest des Wortes sollte den neuen Anfang des Wortes (passend geändert werden a <-> ä, o <-> ö, u <-> y):
köyhä kontti -> kouha köntti
hauva läähättää -> läyvä haahattaa
eund isind neutral und können mit allen anderen Buchstaben erscheinen; Das Vertauschen in ein Wort darf keine Änderungen am Rest des Wortes verursachen.
Spezialfälle
Die Vokalharmonie gilt nicht für einige Wörter, einschließlich vieler Lehnwörter und zusammengesetzter Wörter. Diese Fälle müssen nicht "korrekt" behandelt werden.
Herausforderung
Geben Sie bei zwei gegebenen Wörtern die Wörter spoonerisiert aus.
Die Eingabewörter enthalten nur die Zeichen a-zund äö. Sie können zwischen Groß- und Kleinschreibung wählen, aber Ihre Wahl muss zwischen Wörtern und Eingabe / Ausgabe konsistent sein.
I / O kann in jedem geeigneten Format erfolgen . (Wörter sollten als Zeichenfolgen oder Arrays von Zeichen betrachtet werden.)
Das ist Code-Golf , also gewinnt die kürzeste Lösung in Bytes.
Testfälle
U+0308 COMBINING DIAERESISsollte in U+00E4 LATIN SMALL LETTER A WITH DIAERESISOrdnung sein.)
eund isind neutral sind fihus keksy, huvu lehyund lesmä prihtiakzeptable Antworten auf kehys fiksu, levy huhuund prisma lehtijeweils?
puoskari äyskäri --> äöskäri puuskari --> puoskari ääskäri.