Słowo kufer to połączenie dwóch słów, które bierze udział w każdym słowie i czyni je jednym nowym słowem. Na przykład lew + tygrys => liger .
Napiszmy program do generowania portmanteaus z pary słów wejściowych. Komputery nie są najlepsze w języku angielskim, więc musimy ustalić pewne zasady, aby portmanteaus wyjściowe były przyjemne dla oka i ucha.
(W tym miejscu pokazano przykłady z separatorem między prefiksem i sufiksem:. li|ger
Jednak rzeczywiste wyjścia programu nie powinny mieć separatora:. liger
)
- Każdy portmanteau będzie składał się z niepustego przedrostka pierwszego słowa połączonego z niepustym przyrostkiem drugiego słowa: tak na
li|ger
, nie na|iger
. - Jeśli prefiks kończy się samogłoską, sufiks musi zaczynać się spółgłoską i odwrotnie: tak na
lio|ger
lubl|er
, nie nalio|iger
lubl|ger
. Możesz zdecydować, czy liczyćy
jako samogłoskę czy spółgłoskę. Twoje rozwiązanie musi jednak wybrać jedną opcję i pozostać przy niej. - Wynikowe słowo nie może zawierać żadnego z oryginalnych słów w całości: tak
lio|ger
, nie,lion|iger
lubli|tiger
.- Ta reguła obowiązuje nawet wtedy, gdy dana część jest utworzona z części obu słów: z wprowadzeniem
two
+words
, wyjścietw|ords
jest nadal nielegalne, ponieważ zawiera podłańcuchwords
. (Jedyne prawidłowe dane wyjściowe dla tej pary tot|ords
.)
- Ta reguła obowiązuje nawet wtedy, gdy dana część jest utworzona z części obu słów: z wprowadzeniem
Twój program lub funkcja musi wziąć dwa słowa i wypisać / zwrócić listę wszystkich przyjemnych portmanteaus, które można utworzyć z tych słów w tej kolejności.
Detale
- Obowiązują standardowe metody wejścia i wyjścia . Standardowe luki są zabronione.
- Słowa będą się składać tylko z małych liter (lub, jeśli wolisz, tylko z wielkich liter).
- Możesz wziąć dwa słowa wejściowe jako listę, krotkę, dwa osobne dane wejściowe, pojedynczy ciąg znaków z nieliterowym ogranicznikiem itp.
- Format wyjściowy jest podobnie elastyczny; jeśli zwrócisz lub wyślesz ciąg, należy go oddzielić tak, aby było jasne, gdzie kończy się jedno słowo portmanteau, a następne zaczyna.
- W wyrazie portmanteau nie powinno być żadnych ograniczników.
- W porządku, jeśli twoja lista wyników zawiera duplikaty wyników; można również usunąć duplikaty.
Przypadki testowe
> 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
Rozwiązanie referencyjne
Oto rozwiązanie odniesienia w Pip (traktuje y
jako spółgłoskę).
To jest golf golfowy : wygrywa najkrótsza odpowiedź w każdym języku!