甲混成词是两个词的组合拍摄每一个单词的一部分,使它们变成单一的新词。例如,狮子 + 老虎 => liger。
让我们编写一个从一对输入单词生成portmanteaus的程序。电脑不是英语水平最好的,所以我们需要建立一些规则以确保输出的portmanteaus令人耳目一新。
(为清楚起见li|ger,此处的示例在前缀和后缀之间显示了分隔符:。但是,程序的实际输出不应包含分隔符:liger。)
- 每个portmanteau将由第一个单词的非空前缀与第二个单词的非空后缀组成:yes到
li|ger,no to|iger。 - 如果前缀以元音结尾,则后缀必须以辅音开头,反之亦然:是
lio|ger或l|er,否是lio|iger或l|ger。您可以决定算作y元音还是辅音。但是,您的解决方案必须选择一个选项并坚持使用。 - 产生的字词不得完整包含两个原始字词:是
lio|ger,lion|iger或li|tiger。- 即使所讨论的部分是由两个单词的一部分组成的,该规则仍然成立:输入为
two+时words,输出tw|ords仍然是非法的,因为它包含子字符串words。(此对的唯一有效输出是t|ords。) 
 - 即使所讨论的部分是由两个单词的一部分组成的,该规则仍然成立:输入为
 
您的程序或函数必须使用两个单词,并输出/返回可以由这些单词按该顺序形成的所有令人愉悦的portmanteaus列表。
细节
- 标准输入和输出方法适用。禁止出现标准漏洞。
 - 单词将仅包含小写字母(或者,如果您愿意,也仅包含大写字母)。
 - 您可以将两个输入单词作为列表,元组,两个单独的输入,带有非字母定界符的单个字符串等。
 - 输出格式同样具有灵活性;如果您返回或输出一个字符串,则应将其定界,以使一个portmanteau单词的末尾清晰而下一个开始。
 - 在portmanteau单词内不应有任何定界符。
 - 如果您的输出列表中包含重复的结果,也可以;也可以删除重复项。
 
测试用例
> 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
参考溶液
这是代码高尔夫:每种语言中最短的答案胜出!