И есть список букв, из части которых нужно составить слово (используется 2-10 букв). Как найти все слова, которые можно составить из этих букв, на jquery или php или через mysql
Буквы:
ЙЗОЛЯКВХДИЦГМВАП
Из этих букв должно как минимум найтись слово "подвал", которое есть в словаре.
дхьмщсоьчрбьенлс
Из этих "Дробь"
Мне в голову приходит только подсчитать md5 по всем словам и сравнивать с md5 букв, но в таком случае нужно точно вводить все 16 символов, а хотелось бы, чтобы работало и при меньшем количестве и при ошибках в вводе.
Вот этот скрипт умеет искать, но нужно вводить все 16 символов. Хотя при ошибках он тоже ищет, так что там не md5 - otvetok.ru/govorun
Набросал вот, с учетом повторяющихся букв. То есть в наборе ЙЗОЛЯКВХДИЦГМВАП доступно две буквы "В" и только одна "О". https://jsfiddle.net/eju9Lra7/
Один проход по списку слов
Регуляркой проверяем, нет ли в слове недопустимых букв (это не обязательно, но с регуляркой вроде бы быстрее работает, по хорошему надо бы потестить на большом списке)
Перебираем буквы в слове, использованные вычеркиваем.
reds, можно еще ускорить, если заранее подготовить список.
Если отсортировать его по алфавиту, например, и заранее записать с какой позиции начинаются слова на каждую из букв, можно будет сразу пропустить большие диапазоны.
Также, можно заранее подготовить копии словаря, из которого выброшены слова содержащие определенные часто встречаемые буквы. К примеру, если в списке букв отсутствует буква "О" или буква "Е" - это сильно сократит объем доступных букв.
Возможно, может быть выгодно использовать какой-то индексирующий движок, типа движков из базы данных.