Это головоломка от Льюиса Кэрролла, известная как Слово Лестницы . Дональд Кнут рассказывает об этом в Stanford Graphbase . Это также
Вы можете просмотреть это как поиск в ширину. Вам понадобится доступ к словарю слов, иначе пространство, которое вам придется искать, будет огромным. Если у вас есть только доступ к действительному слову, вы можете сгенерировать все варианты слов, а затем просто использовать isValidWord (), чтобы отфильтровать его (Norvig " Как написать корректор орфографии " - отличное объяснение генерации правки).
Вы можете вести поиск, пытаясь минимизировать расстояние редактирования между тем, где вы находитесь в данный момент, и тем, где вы можете быть. Например, сгенерируйте пространство всех узлов для поиска и отсортируйте по минимальному расстоянию редактирования. Сначала перейдите по ссылкам, которые ближе всего (например, минимизируют расстояние редактирования) к цели. В этом примере следуйте узлам, ближайшим к «власти».
Мне это тоже показалось интересным, так что здесь есть реализация на Haskell здесь , которая работает достаточно хорошо. В комментариях есть ссылка на Clojure версию , в которой есть несколько действительно приятных визуализаций.