Ein Portmanteau-Wort ist eine Kombination aus zwei Wörtern, die aus jedem Wort ein neues Wort bilden. Zum Beispiel Löwe + Tiger => Liger .
Lassen Sie uns ein Programm schreiben, um Portmanteaus aus zwei Eingabewörtern zu generieren. Computer beherrschen nicht die englische Sprache, daher müssen wir einige Regeln festlegen, um sicherzustellen, dass die Ausgabe-Portmanteaus für Auge und Ohr angenehm sind.
(Beispiele sind hier zur Verdeutlichung mit einem Trennzeichen zwischen Präfix und Suffix versehen:. li|ger
Die tatsächlichen Ausgaben des Programms sollten jedoch kein Trennzeichen haben:. liger
)
- Jedes Portmanteau besteht aus einem nicht leeren Präfix des ersten Wortes, das mit einem nicht leeren Suffix des zweiten Wortes verknüpft ist: Ja bis
li|ger
, Nein bis|iger
. - Wenn das Präfix mit einem Vokal endet, muss das Suffix mit einem Konsonanten beginnen und umgekehrt: Ja zu
lio|ger
oderl|er
, Nein zulio|iger
oderl|ger
. Sie können entscheiden, ob Siey
als Vokal oder Konsonant zählen möchten. Ihre Lösung muss jedoch eine Option auswählen und dabei bleiben. - Das resultierende Wort darf keines der ursprünglichen Wörter vollständig enthalten: ja bis
lio|ger
, nein bislion|iger
oderli|tiger
.- Diese Regel gilt auch dann, wenn der betreffende Teil aus Teilen beider Wörter besteht: Bei Eingabe von
two
+words
ist die Ausgabetw|ords
immer noch unzulässig, da sie die Teilzeichenfolge enthältwords
. (Die einzig gültige Ausgabe für dieses Paar wäret|ords
.)
- Diese Regel gilt auch dann, wenn der betreffende Teil aus Teilen beider Wörter besteht: Bei Eingabe von
Ihr Programm oder Ihre Funktion muss aus zwei Wörtern bestehen und eine Liste aller angenehmen Portmanteausgeben / zurückgeben , die aus diesen Wörtern in dieser Reihenfolge gebildet werden können.
Einzelheiten
- Es gelten die Standard-Eingabe- und Ausgabemethoden . Standardlücken sind verboten.
- Wörter bestehen nur aus Kleinbuchstaben (oder, wenn Sie möchten, nur aus Großbuchstaben).
- Sie können die beiden Eingabewörter als Liste, Tupel, zwei separate Eingaben, eine einzelne Zeichenfolge mit einem Nicht-Buchstaben-Trennzeichen usw. verwenden.
- Das Ausgabeformat ist ähnlich flexibel. Wenn Sie eine Zeichenfolge zurückgeben oder ausgeben, sollte sie so begrenzt sein, dass klar ist, wo ein Portmanteau-Wort endet und das nächste beginnt.
- Ein Portmanteau-Wort sollte keine Begrenzer enthalten.
- Es ist in Ordnung, wenn Ihre Ausgabeliste doppelte Ergebnisse enthält. Duplikate können auch entfernt werden.
Testfälle
> lion, tiger
< liger, ler, liger, lir, lioger, lior
> tiger, lion
< tion, ton, tin, tigion, tigon, tigen
> spoon, fork
< sork, spork, spork, spok, spoork, spook
> smoke, fog
< sog, smog, smog, smokog
> gallop, triumph
< giumph, gumph, gariumph, gamph, gaph, gah, galiumph, galumph, galliumph, gallumph, galloriumph, gallomph, galloh
> breakfast, lunch
< bunch, brunch, brench, brech, breh, breanch, breach, breah, breakunch, breakfunch, breakfanch, breakfach, breakfah, breakfasunch
> two, words
< tords
> harry, ginny (if y is treated as a consonant)
< hinny, hanny, hany, hay, harinny, harrinny
> harry, ginny (if y is treated as a vowel)
> hinny, hy, hanny, hany, harinny, hary, harrinny
Referenzlösung
Hier ist eine Referenzlösung in Pip (wird y
als Konsonant behandelt ).
Das ist Code-Golf : Die kürzeste Antwort in jeder Sprache gewinnt!