Вот один для всех вас словесников! Напишите программу или функцию, которая берет список слов и создает список всех возможных конкатенативных разложений для каждого слова. Например:
(Примечание: это только небольшая выборка для иллюстративных целей. Фактический результат гораздо более объемный.)
afterglow = after + glow
afterglow = aft + erg + low
alienation = a + lie + nation
alienation = a + lien + at + i + on
alienation = a + lien + at + ion
alienation = alien + at + i + on
alienation = alien + at + ion
archer = arc + her
assassinate = ass + as + sin + ate
assassinate = ass + ass + in + ate
assassinate = assassin + ate
backpedalled = back + pedal + led
backpedalled = back + pedalled
backpedalled = backpedal + led
goatskin = go + at + skin
goatskin = goat + skin
goatskin = goats + kin
hospitable = ho + spit + able
temporally = tempo + rally
windowed = win + do + wed
windowed = wind + owed
weatherproof = we + at + her + pro + of
yeasty = ye + a + sty
Хорошо, вы поняли идею. :-)
правила
- Используйте любой язык программирования по вашему выбору. Самый короткий код за счет количества символов для каждого языка выигрывает. Это означает, что есть один победитель для каждого используемого языка. Абсолютным победителем будет просто самый короткий код из всех представленных.
- Список ввода может быть текстовым файлом, стандартным вводом или любой структурой списка, которую обеспечивает ваш язык (список, массив, словарь, набор и т. Д.). Слова могут быть английским или любым другим естественным языком. (Если список состоит из английских слов, вам нужно игнорировать или предварительно отфильтровывать однобуквенные элементы, за исключением «a» и «i». Аналогично, для других языков вы захотите игнорировать бессмысленные элементы, если они появляются в файле.)
- Список вывода может быть текстовым файлом, стандартным выводом или любой структурой списка, которую использует ваш язык.
- Вы можете использовать любой входной словарь, который вам нравится, но вы, вероятно, захотите использовать тот, который предоставляет разумные слова, а не тот, который содержит слишком много неясных, загадочных или однотонных слов. Этот файл, который я использовал: список Corncob из более чем 58000 английских слов
Вопросов
Эта задача, прежде всего, заключается в написании кода для выполнения задачи, но также интересно просматривать результаты ...
- Какие подслова встречаются чаще всего?
- Какое слово можно разложить на наибольшее количество подслов?
- Какое слово можно разложить самыми разными способами?
- Какие слова состоят из самых больших подслов?
- Какие декомпозиции вы нашли наиболее забавными?
alienation
когда я вырезал и вставил это. Исправлено сейчас. Что касается других, приведенный выше список является лишь небольшой выборкой. Моя тестовая программа вызвала десятки тысяч ответов при получении списка Corncob.