Контамінація слово являє собою поєднання двох слів , які беруть участь кожного слова і роблять їх в єдине нове слово. Наприклад, лев + тигр => лігер .
Давайте напишемо програму для генерації портмантеїв з пари введених слів. Комп'ютери не найкращі в англійській мові, тому нам потрібно буде встановити деякі правила, щоб гарантувати, що вихідний портмантеус приємний для очей і вуха.
(Приклади тут показані з роздільністю між префіксом та суфіксом для наочності: li|ger
Однак, фактичні виходи програми не повинні мати роздільник:. liger
)
- Кожен портманто буде складатися з непорожнього префіксу першого слова, з'єднаного з непорожнім суфіксом другого слова: так
li|ger
, ні|iger
. - Якщо префікс закінчується на голосну, суфікс повинен починатися з приголосного, і навпаки: так,
lio|ger
абоl|er
ні,lio|iger
абоl|ger
. Ви можете вирішити, вважатиy
голосним або приголосним. Однак ваше рішення повинно вибрати один варіант і дотримуватися його. - Отримане слово не повинно містити жодного з оригінальних слів повністю: так
lio|ger
, ніlion|iger
абоli|tiger
.- Це правило справедливе, навіть якщо відповідна частина утворена з частин обох слів: із введенням
two
+words
, вихідtw|ords
все ще є незаконним, оскільки містить підрядкуwords
. (Єдиним дійсним результатом для цієї пари був биt|ords
.)
- Це правило справедливе, навіть якщо відповідна частина утворена з частин обох слів: із введенням
Ваша програма або функція повинна приймати два слова і виводити / повертати список усіх приємних портмантеїв, які можуть бути сформовані з цих слів у тому порядку.
Деталі
- Застосовуються стандартні методи введення та виведення . Стандартні лазівки заборонені.
- Слова складаються лише з малих літер (або, якщо вам зручніше, лише з малих літер).
- Ви можете взяти два вхідні слова як список, кортеж, два окремі входи, одну рядок із нелітерним роздільником тощо.
- Формат виводу аналогічно гнучкий; якщо ви повернете або виведете рядок, його слід розмежувати таким чином, щоб було зрозуміло, де закінчується одне слово портманто і починається наступне.
- Всередині слова портманто не повинно бути роздільників.
- Добре, якщо ваш вихідний список містить повторювані результати; також добре видалити дублікати.
Тестові справи
> 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
Довідкове рішення
Ось довідкове рішення в Піпі (трактується y
як приголосний).
Це код-гольф : найкоротша відповідь на кожній мові виграє!