Skip to content

Latest commit

 

History

History
31 lines (29 loc) · 2.88 KB

README.md

File metadata and controls

31 lines (29 loc) · 2.88 KB

Из мухи слона

Использование

Перед использованием необходимо обновить автолоадер

composer dump-autoload

Затем запустить сам скрипт

./cook.php

Слова, для которых будет подбираться цепочка задаются в файле cook.php

Информация

Задание

Требуется на PHP написать программу, которая делает из "мухи" - "слона". Например:

муха -> мука -> рука -> ... -> слон 

Т.е., меняя за 1 шаг по 1 букве, нужно найти правильную последовательность словарных слов и распечатать все шаги.

Реализация

В качестве словаря используется SQLite база данных, которая содержит 92675 слов русского языка. Для формирования использовался словарь А. А. Зализняка, из которого были удалены слова с дефисами. Буквы е и ё различаются. Файл словаря был скачан отсюда
В реализации я решил использовать графы, т.к. по моему мнению они лучше всего подходят для решения подобных задач. В качестве поиска кратчайшей цепочки слов был реализован алгоритм волновой трассировки (волновой алгоритм, алгоритм Ли).
В процессе реализации активно использовались возможности ООП с расчётом на то, что каждый модуль может быть с лёгкостью заменён на другой (алгоритм поиска цепочки, метод реализации графов, логгер, работа с БД) либо безболезненно доработан.

P.S.

Данный алгоритм превратил муху в слона, используя следующую цепочку из 9 слов: муха -> мура -> кура -> кора -> корн -> коан -> клан -> клон -> слон

Ссылки