January 1st, 2017

Как я занимался онанизмом

По одной из версий этимология выражения "сделать из мухи слона" восходит к игре, в которой надо получить из одного слова другое слово, меняя на каждом шаге в слове по одной букве, последовательно, но так, чтобы получалось новое слово. К примеру, из слова МУХА слово РЕПА получается в 4 шага легко:
МУХА --> МУКА --> РУКА --> РЕКА --> РЕПА. А вот из слова МУХА сделать СЛОН слабо? Я ткнулся было с карандашом и бумагой - слабо, однако...

Ладно, думаю... Тут "на арапа" не возьмешь, нужен научный подход. Ну, не научный - это я загнул, но инженерный. Итак:
1. Берём электронный словарь русского языка и вычленяем из него все слова из 4-х букв, нумеруя их в произвольной последовательности, проще всего - по алфавиту. Получается что-то около двух с половиной тысяч (если точно - 2397, по той версии, что мне попалась, но возможно их и больше). Из них не все существительные, да и шут с ними. Задача оперировать только с существительными не ставилась. Записываем в столбик в текстовом формате, в файл.
2. Пишем программу определения попарной связности в графе, вершинами которого являются все эти слова. Связанными являются те, что отличаются ровно на одну букву. Таких связей на всю группу четырёхбуквенных слов, с учётом того что они (связи) действуют в обе стороны, оказывается что-то около 12 тысяч. То есть переходы между соседними словами возможны в обе стороны, что и понятно.
3. Пишем программу поиска кратчайшего пути из слова номер N (МУХА) в слово номер M (СЛОН), из истока в сток, по известному алгоритму (Дийкстра). Кто хиппует - тот поймёт. Получаем:
МУХА --> МУРА --> МОРА --> ПОРА --> ПОРТ --> ПООТ --> ПЛОТ --> КЛОТ --> КЛОП --> СЛОП --> СЛОН
Если наложить условие: только существительные, то слово ПООТ (сложный предлог по В.Далю) не канает, но и тут без проблем, получается другая цепочка, чуть подлиннее, но зато с одними существительными:
МУХА --> МОХА --> ЛОХА --> ЛОСА --> ЛОСК --> ЛОЕК --> КОЕК --> КЛЕК --> КЛОК --> КЛОП --> СЛОП --> СЛОН
Цепочки эти, похоже, не единственные, но вот эти - самые короткие. Повторюсь: все слова - словарные, из электронного ресурса, не мной придуманные, кому интересно - проверяйте )))

Похвастал приятелю-коллеге одному (он теоргруппу Гинзбурга окончил). Говорит: онанизм чистейший