Сегодня сделаем простой лингвистический проект: будем собирать новые слова из двух других. Практической ценности здесь мало, но много новых смыслов и неожиданных находок.
Мы подсмотрели идею в Твиттере у Хорошего парня @goodboy_nomore.
В чём идея
Например, у нас есть слово «программа», которое заканчивается на «грамма». И есть слово «грамматика», которое начинается на эти же буквы. Если их записать друг за другом, чтобы слово как бы перетекало одно в другое, получится «программатика». Или вот ещё пара примеров:
абрикосуля = абрикос + косуля (3 буквы в пересечении);
капитание = капитан + питание (5 букв в пересечении).
Смысл понятен: берём первое слово и ищем другое слово, которое начинается на те же буквы, которыми заканчивается первое.
Логика работы
Чтобы не перебирать слова вручную и по памяти, используем силу машин. Как обычно это бывает со словами, мы используем Python — с ним работать со строками проще простого (а слова — это тоже строки).
Алгоритм будет такой:
- Берём файл со словарём русского языка и загружаем слова в массив.
- Перебираем этот массив двумя вложенными циклами, как в пузырьковой сортировке, чтобы получить очередную пару слов.
- Для этой пары слов смотрим, подходит ли конец первого слова к началу второго, а потом наоборот — конец второго слова к началу первого.
- Если подходит — выводим найденное сочетание и переходим к новой паре слов.
- Если не подходит — пробуем уменьшить количество букв в пересечении и проверяем снова.
- Если дошли до минимально допустимого количества букв в пересечении, то делаем вывод, что с этой парой ничего не получится и переходим к следующей.
Ключевой момент алгоритма — минимальное количество букв для пересечения. Оно нужно, чтобы сократить количество найденных вариантов и не генерировать тысячи бесполезных сочетаний типа «миренессанс = мир + ренессанс».
Загружаем файлы из словаря в массив
Нам понадобится словарь слов русского языка в единственном числе и именительном падеже. Таких словарей много, можно взять любой, мы взяли словарь на 68 тысяч слов.
Создаём новый проект на Python и загружаем словарь в массив. Сразу же зададим минимальное количество букв для пересечения:
# открываем файл словаря
with open("singular.txt") as file:
# и загружаем все слова из него в массив
text_array = [row.strip() for row in file]
# минимальное количество букв для пересечения
lim = 4
Организуем цикл для перебора слов
Чтобы перебрать попарно все слова, используем простой подход: два вложенных друг в друга цикла. Один будет брать первое слово, второй — следующее, а внутри они будут попарно сравниваться на пересечения.
Сразу сделаем оптимизацию: чтобы не писать два раза один и тот же код для проверки разного порядка слов, мы вынесем это в функцию, а в цикле сошлёмся на неё. Саму функцию напишем на следующем шаге, а пока вот циклы:
# перебираем все слова с первого до предпоследнего
for i in range (0,len(text_array)-1):
# и сразу перебираем все слова от следующего до последнего
for j in range (i+1,len(text_array)):
# пробуем найти пересечение первого слова со вторым
glue(text_array[i], text_array[j])
# а потом второго — с первым
glue(text_array[j], text_array[i])
Функция для склеивания слов
У нас есть минимальное количество букв для склеивания, но нет максимального. Чтобы у нас была точка отсчёта, стартовое количество букв посчитаем так:
- Найдём длину первого слова.
- Затем длину второго слова.
- Возьмём наименьшее из них
- Вычтем из результата единицу, чтобы у нас не было ситуации, когда одно слово полностью вошло в другое — автодорога = автодорога + дорога. Эта недостающая буква и будет страховкой.
Для выделения части слова используем квадратные скобки с двоеточием — в Питоне они нарезают строку на части. Работает это так:
S[0:2] — вернёт первые три символа из строки («Привет» → «При»);
S[3:5] — вернёт с третьего по пятый символ («Привет» → «иве»);
S[:3] — вернёт первые четыре символа из строки, потому что раз нет первого аргумента, то считаем от начала («Привет» → «Прив»);
S[3:] — вернёт все символы из строки, начиная с четвёртого, так как нумерация идёт с нуля, а конец в диапазоне не указан («Привет» → «вет»)
Ещё можно использовать отрицательные значения — в этом случае Python будет считать с конца строки:
S[-2:] — вернёт последние три символа из строки («Привет» → «вет»)
S[:-2] — вернёт всё от начала строки и до минус второго символа («Привет» → «При»)
Зная это, мы теперь легко можем написать функцию, которая проверяет и склеивает слова. Заодно добавим проверку на слово из словаря: если то, что у нас получилось, уже и так было в словаре, значит, мы ничего нового не придумали и выводить это не надо.
# функция, которая склеивает слова
def glue(x,y):
# находим максимальное доступное количество букв пересечения для этих двух слов
start = min(len(x),len(y))-1
# пока это количество больше минимального
while start >= lim:
# берём конец первого слова
s1 = x[-start:]
# берём начало второго слова
s2 = y[:start]
# если они равны
if s1 == s2:
# склеиваем эти слова
s = x + y[start:]
# если получившегося слова нет в изначальном словаре
if s not in text_array:
# то выводим его и то, из чего оно получилось
print(s + " = " + x + " + " + y)
# как только нашли пересечение слов — выходим из цикла
break
# если с текущим количеством букв пересечение не получается
else:
# уменьшаем количество букв для пересечения
start -= 1
# открываем файл словаря
with open("singular.txt") as file:
# и загружаем все слова из него в массив
text_array = [row.strip() for row in file]
# минимальное количество букв для пересечения
lim = 4
# функция, которая склеивает слова
def glue(x,y):
# находим максимальное доступное количество букв пересечения для этих двух слов
start = min(len(x),len(y))-1
# пока это количество больше минимального
while start >= lim:
# берём конец первого слова
s1 = x[-start:]
# берём начало второго слова
s2 = y[:start]
# если они равны
if s1 == s2:
# склеиваем эти слова
s = x + y[start:]
# если получившегося слова нет в изначальном словаре
if s not in text_array:
# то выводим его и то, из чего оно получилось
print(s + " = " + x + " + " + y)
# как только нашли пересечение слов — выходим из цикла
break
# если с текущим количеством букв пересечение не получается
else:
# уменьшаем количество букв для пересечения
start -= 1
# перебираем все слова с первого до предпоследнего
for i in range (0,len(text_array)-1):
# и сразу перебираем все слова от следующего до последнего
for j in range (i+1,len(text_array)):
# пробуем найти пересечение первого слова со вторым
glue(text_array[i], text_array[j])
# а потом второго — с первым
glue(text_array[j], text_array[i])
абажуристка = абажур + ажуристка
абажурник = абажур + ажурник
абажурность = абажур + ажурность
диабазин = диабаз + абазин
лабазин = лабаз + абазин
анабазинец = анабазин + абазинец
диабазинец = диабаз + абазинец
лабазинец = лабаз + абазинец
анабазинцы = анабазин + абазинцы
диабазинцы = диабаз + абазинцы
лабазинцы = лабаз + абазинцы
анабазинка = анабазин + абазинка
диабазинка = диабаз + абазинка
абазинкапсуляция = абазинка + инкапсуляция
абазинкассатор = абазинка + инкассатор
абазинкассаторша = абазинка + инкассаторша
абазинкассация = абазинка + инкассация
абазинкассирование = абазинка + инкассирование
абазинкассо = абазинка + инкассо
лабазинка = лабаз + абазинка
диабазия = диабаз + абазия
лабазия = лабаз + абазия
балабандон = балабан + абандон
барабандон = барабан + абандон
кабандон = кабан + абандон
сабандон = сабан + абандон
чабандон = чабан + абандон
шарабандон = шарабан + абандон
аббатиссаливание = аббатисса + иссаливание
аббатствол = аббатство + ствол
аббатстволик = аббатство + стволик
аббатстволина = аббатство + стволина
аббатстволистость = аббатство + стволистость
аббатстволовой = аббатство + стволовой
аббатстволовая = аббатство + стволовая
аббатстволовые = аббатство + стволовые
аббатствольщик = аббатство + ствольщик
аббатствор = аббатство + створ
аббатствораживание = аббатство + створаживание
аббатстворка = аббатство + створка
аббатстворочка = аббатство + створочка
аббревиатуранга = аббревиатура + туранга
аббревиатурач = аббревиатура + турач
абдоменка = абдомен + доменка
абдоменщик = абдомен + доменщик
абелитель = абелит + белитель
корабелит = корабел + абелит
фанаберрация = фанабер + аберрация
чаберрация = чабер + аберрация
шаберрация = шабер + аберрация
шаберрация = шабер + аберрация
сабзац = сабза + абзац
препохабиетин = препохабие + абиетин
абиогенезис = абиогенез + генезис
абиссальвадорец = абиссаль + сальвадорец
абиссальвадорцы = абиссаль + сальвадорцы
абиссальвадорка = абиссаль + сальвадорка
абиссальварсан = абиссаль + сальварсан
абиссальвиния = абиссаль + сальвиния
абиссальдо = абиссаль + сальдо
абиссальза = абиссаль + сальза
абиссальмонелла = абиссаль + сальмонелла
абиссальмонеллез = абиссаль + сальмонеллез
абиссальник = абиссаль + сальник
абиссальность = абиссаль + сальность
абиссальпингит = абиссаль + сальпингит
абиссальпингоофорит = абиссаль + сальпингоофорит
абиссальто = абиссаль + сальто
абиссальто-мортале = абиссаль + сальто-мортале
абиссальтоморталист = абиссаль + сальтоморталист
абиссальце = абиссаль + сальце
абиссинкапсуляция = абиссинка + инкапсуляция
абиссинкассатор = абиссинка + инкассатор
абиссинкассаторша = абиссинка + инкассаторша
абиссинкассация = абиссинка + инкассация
абиссинкассирование = абиссинка + инкассирование
абиссинкассо = абиссинка + инкассо
ваххабитуриент = ваххабит + абитуриент
ваххабитуриентка = ваххабит + абитуриентка
наблактировка = набла + аблактировка
наблатив = набла + аблатив
наблаут = набла + аблаут
саблятив = сабля + аблятив
шаблятив = шабля + аблятив
сабляут = сабля + абляут
шабляут = шабля + абляут
сабляция = сабля + абляция
шабляция = шабля + абляция
балаболиционизм = балабол + аболиционизм
аболиционизменность = аболиционизм + низменность
балаболиционист = балабол + аболиционист
аболиционистагм = аболиционист + нистагм
балаболиционистка = балабол + аболиционистка
балаболиция = балабол + аболиция
балабонемент = балабон + абонемент
балабонемент = балабон + абонемент
лиссабонемент = лиссабон + абонемент
абонементал = абонемент + ментал
абонементалитет = абонемент + менталитет
абонементальность = абонемент + ментальность
абонементик = абонемент + ментик
абонементовка = абонемент + ментовка
абонементол = абонемент + ментол
абонементор = абонемент + ментор
балабонент = балабон + абонент
балабонент = балабон + абонент
лиссабонент = лиссабон + абонент
балабонентка = балабон + абонентка
балабонентка = балабон + абонентка
лиссабонентка = лиссабон + абонентка
балабонирование = балабон + абонирование
балабонирование = балабон + абонирование
лиссабонирование = лиссабон + абонирование
водозабордаж = водозабор + абордаж
забордаж = забор + абордаж
набордаж = набор + абордаж
табордаж = табор + абордаж
фотонабордаж = фотонабор + абордаж
водозабориген = водозабор + абориген
забориген = забор + абориген
набориген = набор + абориген
табориген = табор + абориген
фотонабориген = фотонабор + абориген
водозаборигенка = водозабор + аборигенка
заборигенка = забор + аборигенка
наборигенка = набор + аборигенка
таборигенка = табор + аборигенка
фотонаборигенка = фотонабор + аборигенка
абортжурнал = аборт + бортжурнал
абортик = аборт + бортик
абортинженер = аборт + бортинженер
абортмеханик = аборт + бортмеханик
абортник = аборт + бортник
абортничанье = аборт + бортничанье
абортничество = аборт + бортничество
абортовка = аборт + бортовка
абортовщик = аборт + бортовщик
абортпаек = аборт + бортпаек
абортпроводник = аборт + бортпроводник
абортпроводница = аборт + бортпроводница
абортрадист = аборт + бортрадист
аборть = аборт + борть
водозаборт = водозабор + аборт
заборт = забор + аборт
наборт = набор + аборт
таборт = табор + аборт
фотонаборт = фотонабор + аборт
абортарийцы = абортарий + арийцы
абортарийка = абортарий + арийка
водозабортарий = водозабор + абортарий
гакабортарий = гакаборт + абортарий
забортарий = забор + абортарий
набортарий = набор + абортарий
табортарий = табор + абортарий
фотонабортарий = фотонабор + абортарий
водозабортивность = водозабор + абортивность
гакабортивность = гакаборт + абортивность
забортивность = забор + абортивность
набортивность = набор + абортивность
табортивность = табор + абортивность
фотонабортивность = фотонабор + абортивность
абракадабразив = абракадабра + абразив
жабразив = жабра + абразив
фабразив = фабра + абразив
швабразив = швабра + абразив
абракадабразия = абракадабра + абразия
жабразия = жабра + абразия
фабразия = фабра + абразия
швабразия = швабра + абразия
жабракадабра = жабра + абракадабра
фабракадабра = фабра + абракадабра
швабракадабра = швабра + абракадабра
абрекватер = абрек + брекватер
абрекчия = абрек + брекчия
абрикосаэдр = абрикос + икосаэдр
абрикотинга = абрикотин + котинга
абристоль = абрис + бристоль
абсентаво = абсент + сентаво
абсентеcимо = абсент + сентеcимо
абсентенциозность = абсент + сентенциозность
абсентенция = абсент + сентенция
абсентимент = абсент + сентимент
абсентиментализм = абсент + сентиментализм
абсентименталист = абсент + сентименталист
абсентиментальничание = абсент + сентиментальничание
абсентиментальность = абсент + сентиментальность
абсентиментальщина = абсент + сентиментальщина
абсентимо = абсент + сентимо
абсентябрь = абсент + сентябрь
абсентеистка = абсентеист + теистка
абсорбенталь = абсорбент + бенталь
абсорбентозух = абсорбент + бентозух
абсорбентонит = абсорбент + бентонит
абсорбентос = абсорбент + бентос
абстрактамент = абстракт + трактамент
абстрактат = абстракт + трактат
абстрактация = абстракт + трактация
абстрактир = абстракт + трактир
абстрактиришко = абстракт + трактиришко
абстрактирчик = абстракт + трактирчик
абстрактирщик = абстракт + трактирщик
абстрактирщица = абстракт + трактирщица
абстрактование = абстракт + трактование
абстрактовка = абстракт + трактовка
абстрактор = абстракт + трактор
абстракторизация = абстракт + тракторизация
абстракторист = абстракт + тракторист
абстрактористка = абстракт + трактористка
абстракторишко = абстракт + тракторишко
абстракторостроение = абстракт + тракторостроение
абстракторостроитель = абстракт + тракторостроитель
абстрактриса = абстракт + трактриса
абстракционизменность = абстракционизм + низменность
абстракционистагм = абстракционист + нистагм
абсурдина = абсурд + сурдина
абсурдинка = абсурд + сурдинка
абсурдокамера = абсурд + сурдокамера
абсурдопедагог = абсурд + сурдопедагог
абсурдопедагогика = абсурд + сурдопедагогика
абсцессионарий = абсцесс + цессионарий
абсцессия = абсцесс + цессия
абсциссаливание = абсцисса + иссаливание
кабулия = кабул + абулия
абштрихиаз = абштрих + трихиаз
абштрихина = абштрих + трихина
абштрихинелла = абштрих + трихинелла
абштрихинеллез = абштрих + трихинеллез
абштрихиноз = абштрих + трихиноз
абштрихом = абштрих + трихом
абштрихомонада = абштрих + трихомонада
абштрихомоноз = абштрих + трихомоноз
абштрихоспория = абштрих + трихоспория
абштрихотомия = абштрих + трихотомия
абштрихофит = абштрих + трихофит
абштрихофития = абштрих + трихофития
абштрихоцефалез = абштрих + трихоцефалез
абштрихоциста = абштрих + трихоциста
абштрихование = абштрих + штрихование
абштриховка = абштрих + штриховка
абштриховщик = абштрих + штриховщик
абштриховщица = абштрих + штриховщица
завалист = завал + авалист
карнавалист = карнавал + авалист
авалистья = авалист + листья
авалистаж = авалист + листаж
авалиства = авалист + листва
авалиственит = авалист + лиственит
авалиственница = авалист + лиственница
авалиственничник = авалист + лиственничник
авалиствень = авалист + листвень
авалиствие = авалист + листвие
авалиствяг = авалист + листвяг
авалиствяк = авалист + листвяк
авалистик = авалист + листик
авалистоблошка = авалист + листоблошка
авалистобой = авалист + листобой
авалистовертка = авалист + листовертка
авалистовка = авалист + листовка
авалистовуха = авалист + листовуха
авалистодер = авалист + листодер
авалистоед = авалист + листоед
авалисток = авалист + листок
авалистокатальный = авалист + листокатальный
авалистокатальная = авалист + листокатальная
авалистокатальные = авалист + листокатальные
авалистонос = авалист + листонос
авалистопад = авалист + листопад
авалистопадник = авалист + листопадник
авалистопрокатка = авалист + листопрокатка
авалистопрокатчик = авалист + листопрокатчик
авалисторез = авалист + листорез
авалисточек = авалист + листочек
авалистье = авалист + листье
навалист = навал + авалист
авальвация = аваль + вальвация
авальденс = аваль + вальденс
авальдшнеп = аваль + вальдшнеп
авалькирия = аваль + валькирия
авальма = аваль + вальма
авальс = аваль + вальс
авальтрап = аваль + вальтрап
авальхалла = аваль + вальхалла
авальцевание = аваль + вальцевание
авальцовка = аваль + вальцовка
авальцовщик = аваль + вальцовщик
авальцовщица = аваль + вальцовщица
авальщик = аваль + вальщик
авальяжность = аваль + вальяжность
авальян = аваль + вальян
карнаваль = карнавал + аваль
наваль = навал + аваль
авангарда = авангард + гарда
авангардемарин = авангард + гардемарин
авангардения = авангард + гардения
авангардероб = авангард + гардероб
авангардеробная = авангард + гардеробная
авангардеробные = авангард + гардеробные
авангардеробщик = авангард + гардеробщик
авангардеробщица = авангард + гардеробщица
авангардина = авангард + гардина
авангардинка = авангард + гардинка
нефтекаравангард = нефтекараван + авангард
палавангард = палаван + авангард
паравангард = параван + авангард
плотокаравангард = плотокараван + авангард
савангард = саван + авангард
нефтекаравангардизм = нефтекараван + авангардизм
палавангардизм = палаван + авангардизм
паравангардизм = параван + авангардизм
плотокаравангардизм = плотокараван + авангардизм
савангардизм = саван + авангардизм
авангардистанционность = авангардист + дистанционность
авангардистанционный = авангардист + дистанционный
авангардистанция = авангардист + дистанция
авангардистиллят = авангардист + дистиллят
авангардистиллятор = авангардист + дистиллятор
авангардистилляция = авангардист + дистилляция
авангардистимия = авангардист + дистимия
авангардистих = авангардист + дистих
авангардисторзия = авангардист + дисторзия
авангардисторсия = авангардист + дисторсия
авангардистрибутивность = авангардист + дистрибутивность
авангардистрибуция = авангардист + дистрибуция
авангардистрикт = авангардист + дистрикт
авангардистрофик = авангардист + дистрофик
авангардистрофичка = авангардист + дистрофичка
авангардистрофия = авангардист + дистрофия
нефтекаравангардист = нефтекараван + авангардист
палавангардист = палаван + авангардист
паравангардист = параван + авангардист
плотокаравангардист = плотокараван + авангардист
савангардист = саван + авангардист
нефтекаравангардистка = нефтекараван + авангардистка
палавангардистка = палаван + авангардистка
паравангардистка = параван + авангардистка
плотокаравангардистка = плотокараван + авангардистка
савангардистка = саван + авангардистка
нефтекараванзал = нефтекараван + аванзал
палаванзал = палаван + аванзал
параванзал = параван + аванзал
плотокараванзал = плотокараван + аванзал
саванзал = саван + аванзал
аванкамера-обскура = аванкамера + камера-обскура
аванкамералист = аванкамера + камералист
аванкамералистика = аванкамера + камералистика
аванкамералка = аванкамера + камералка
молдаванкамера = молдаванка + аванкамера
нефтекараванкамера = нефтекараван + аванкамера
палаванкамера = палаван + аванкамера
параванкамера = параван + аванкамера
плотокараванкамера = плотокараван + аванкамера
саванкамера = саван + аванкамера
нефтекараванложа = нефтекараван + аванложа
палаванложа = палаван + аванложа
параванложа = параван + аванложа
плотокараванложа = плотокараван + аванложа
саванложа = саван + аванложа
нефтекараванпорт = нефтекараван + аванпорт
палаванпорт = палаван + аванпорт
параванпорт = параван + аванпорт
плотокараванпорт = плотокараван + аванпорт
аванпортал = аванпорт + портал
аванпортаменто = аванпорт + портаменто
аванпортативность = аванпорт + портативность
аванпортач = аванпорт + портач
аванпортбукет = аванпорт + портбукет
аванпортвейн = аванпорт + портвейн
аванпортвейнец = аванпорт + портвейнец
аванпортвейнцы = аванпорт + портвейнцы
аванпортер = аванпорт + портер
аванпортерная = аванпорт + портерная
аванпортерные = аванпорт + портерные
аванпортик = аванпорт + портик
аванпортище = аванпорт + портище
аванпортки = аванпорт + портки
аванпортландцемент = аванпорт + портландцемент
аванпортмоне = аванпорт + портмоне
аванпортниха = аванпорт + портниха
аванпортной = аванпорт + портной
аванпортные = аванпорт + портные
аванпортняга = аванпорт + портняга
аванпортняжение = аванпорт + портняжение
аванпортняжество = аванпорт + портняжество
аванпортняжка = аванпорт + портняжка
аванпортняжничество = аванпорт + портняжничество
аванпорто = аванпорт + порто
аванпорто-франко = аванпорт + порто-франко
аванпортовик = аванпорт + портовик
аванпортовичка = аванпорт + портовичка
аванпортовый = аванпорт + портовый
аванпортолан = аванпорт + портолан
аванпортомойка = аванпорт + портомойка
аванпортомойня = аванпорт + портомойня
аванпортомоя = аванпорт + портомоя
аванпорточина = аванпорт + порточина
аванпорточки = аванпорт + порточки
аванпортпапирос = аванпорт + портпапирос
аванпортплед = аванпорт + портплед
аванпортрет = аванпорт + портрет
аванпортретец = аванпорт + портретец
аванпортретцы = аванпорт + портретцы
аванпортретик = аванпорт + портретик
аванпортретирование = аванпорт + портретирование
аванпортретист = аванпорт + портретист
аванпортретистка = аванпорт + портретистка
аванпортретная = аванпорт + портретная
аванпортретные = аванпорт + портретные
аванпортсигар = аванпорт + портсигар
аванпортсигарчик = аванпорт + портсигарчик
аванпорттабак = аванпорт + порттабак
аванпортугалец = аванпорт + португалец
аванпортугалка = аванпорт + португалка
аванпортулак = аванпорт + портулак
аванпортулаковые = аванпорт + портулаковые
аванпортулан = аванпорт + портулан
аванпортупей-прапорщик = аванпорт + портупей-прапорщик
аванпортупей-юнкер = аванпорт + портупей-юнкер
аванпортупея = аванпорт + портупея
аванпортфелик = аванпорт + портфелик
аванпортфелишко = аванпорт + портфелишко
аванпортфель = аванпорт + портфель
аванпортфельчик = аванпорт + портфельчик
аванпортчишки = аванпорт + портчишки
аванпортшез = аванпорт + портшез
аванпорты = аванпорт + порты
аванпортье = аванпорт + портье
аванпортьера = аванпорт + портьера
аванпортьерка = аванпорт + портьерка
аванпортянка = аванпорт + портянка
аванпортяночка = аванпорт + портяночка
саванпорт = саван + аванпорт
нефтекараванпост = нефтекараван + аванпост
палаванпост = палаван + аванпост
параванпост = параван + аванпост
плотокараванпост = плотокараван + аванпост
аванпостав = аванпост + постав
аванпоставец = аванпост + поставец
аванпоставцы = аванпост + поставцы
аванпоставка = аванпост + поставка
аванпоставление = аванпост + поставление
аванпоставщик = аванпост + поставщик
аванпоставщица = аванпост + поставщица
аванпостамент = аванпост + постамент
аванпостанов = аванпост + постанов
аванпостановка = аванпост + постановка
аванпостановление = аванпост + постановление
аванпостановщик = аванпост + постановщик
аванпостарение = аванпост + постарение
аванпостелишка = аванпост + постелишка
аванпостель = аванпост + постель
аванпостелька = аванпост + постелька
аванпостельник = аванпост + постельник
аванпостельница = аванпост + постельница
аванпостельничий = аванпост + постельничий
аванпостепенность = аванпост + постепенность
аванпостепеновец = аванпост + постепеновец
аванпостепеновцы = аванпост + постепеновцы
аванпостепеновщина = аванпост + постепеновщина
аванпостигание = аванпост + постигание
аванпостижение = аванпост + постижение
аванпостижер = аванпост + постижер
аванпостижимость = аванпост + постижимость
аванпостилка = аванпост + постилка
аванпостилочка = аванпост + постилочка
аванпостимпрессионизм = аванпост + постимпрессионизм
аванпостирушка = аванпост + постирушка
аванпостмодернизм = аванпост + постмодернизм
аванпостник = аванпост + постник
аванпостница = аванпост + постница
аванпостничество = аванпост + постничество
аванпостное = аванпост + постное
аванпостность = аванпост + постность
аванпостовой = аванпост + постовой
аванпостовые = аванпост + постовые
аванпостой = аванпост + постой
аванпостороннее = аванпост + постороннее
аванпосторонний = аванпост + посторонний
аванпосторонняя = аванпост + посторонняя
аванпосторонние = аванпост + посторонние
аванпостоялец = аванпост + постоялец
аванпостоялица = аванпост + постоялица
аванпостоялка = аванпост + постоялка
аванпостоялое = аванпост + постоялое
аванпостоялые = аванпост + постоялые
аванпостоянная = аванпост + постоянная
аванпостоянные = аванпост + постоянные
аванпостоянность = аванпост + постоянность
аванпостоянство = аванпост + постоянство
аванпостпакет = аванпост + постпакет
аванпостпозиция = аванпост + постпозиция
аванпостпред = аванпост + постпред
аванпостпредство = аванпост + постпредство
аванпострадавший = аванпост + пострадавший
аванпострадавшая = аванпост + пострадавшая
аванпострадавшие = аванпост + пострадавшие
аванпострел = аванпост + пострел
аванпостреленок = аванпост + постреленок
аванпостреливание = аванпост + постреливание
аванпостриг = аванпост + постриг
Что дальше
Ради интереса можно написать код, который так будет генерировать новое слово из цепочки нескольких слов любой длины. Пока это отложим, но если вам хочется прямо сейчас — берите наш код и отталкивайтесь от него, правок для нового проекта будет не очень много.