Задать вопрос

Как найти все варианты сочетания элементов массива?

Задача: нужно сделать функцию которая получает строку, например "Решетка для вентиляции", а возвращает различные формы и склонения этой строки, например "Решетки для вентиляции", при этом нужно еще получать варианты с разным порядком, например "для вентиляцию решетку"
Использую phpmorphy для получения всех форм слова, в итоге у меня 2-x мерный массив. Проблема что не могу понять каким алгоритмом получить все вариации элементов этого массива.
Проблема что размерность массива величина переменная. В какую сторону копать?
  • Вопрос задан
  • 544 просмотра
Подписаться 1 Оценить 4 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега PHP
Web developer
Решение в лоб:
- разбить фразу по словам (получится массив из N строк),
- для каждого слова построить его все словоморфы (в итоге массив из N массивов),
- рекурсивно N раз брать следующее слово из N-ного элемента массив
- для перемешивания слов либо отдельный метод по полученному массиву, либо N-квадрат рекурсий предыдущего пункта
Итог: уже на 5 словах даже мощный сервер сдохнет

Умное решение: скормить исходную фразу Sphinx/Lucene - они нами найдут нужное среди вашего контента
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы