Фон
Три роки тому цей хлопець Том Мерфі взяв його в голову, щоб поширити ідею про портманто до всіх слів мовою і назвав це портмантом ( portmanteau plus tout [французька для всіх ]). Визначивши англійську як список зі 108709 слів, він зумів знайти послідовність 611 820 букв із наступними двома властивостями:
- Кожне англійське слово міститься в рядку.
- Деякі околиці, що містять будь-які дві сусідні літери в рядку, - це англійське слово.
Ось посилання на сторінку, на якій цей портмант можна знайти (разом із відео поясненням).
Портмантаут
Перше з двох властивостей портманта легко зрозуміти. Другий може зажадати певних пояснень.
В основному слова повинні перетинатися. "гольф-код" ніколи не з’явиться в портманті англійською мовою, так як там немає жодного слова, яке містить "fc". Однак ви можете знайти "codegolf" у портмантуті, оскільки "его" подолає розрив (а всі інші пари букв знаходяться у "коді" чи "гольфі").
Ваше завдання:
Напишіть програму або функцію, яка займає список рядків і повертає будь-який портмат списку.
Цей код Python 3 перевірить портманта.
Тестові справи
Усі списки не упорядковані; тобто,
{"code", "ego", "golf"} -> "codegolf"
{"more", "elm", "maniac"} -> "morelmaniac" or "morelmorelmaniac" or "morelmorelmorelmaniac" or...
Would a morelmaniac be some sort of mycologist?
{"ab", "bc", "cd", "de", "ef", "fg", "gh", "hi", "ij", "jk", "kl", "lm", "mn", "no", "op", "pq", "qr", "rs", "st", "tu", "uv", "vw", "wx", "xy", "yz", "za"} -> "abcdefghijklmnopqrstuvwxyza" or "rstuvwxyzabcdefghijklmnopqrstuvwxyzabcdef" or any 27+ letters in order
А чому ні? Масовий на сайті Мерфі, якщо ваш код виконується протягом розумного часу.
Правила
- Ваш код повинен зупинитися.
- Вам не потрібно повертати один і той же портматман при кожному виконанні.
- Ви можете припустити , що всі рядки складаються тільки з малих літер
a
черезz
. - Якщо портмантаут неможливий, ваша програма може зробити все, що завгодно. Наприклад:
{"most", "short", "lists"}
- Застосовуються стандартні правила вводу / виводу та лазівки .
Це код-гольф , тому найкоротше рішення (в байтах) на кожній мові виграє! Щасливого гольфу!
{"sic", "bar", "rabbits", "cradle"} -> "barabbitsicradle"
{"mauve", "elated", "cast", "electric", "tame"} -> "mauvelectricastamelated"
(більше тестових випадків)