Comments 10
Интересная задача. Я тоже когда подсел на Словодел, захотел найти комбинацию слов без повторения букв. Но я решил не все буквы проверять, а только самые часто употребляемые. Я придумал 2 слова: икона, супер. Никаких нейросетей или программирования, только ковыряние в носу.
Это стандартная задача на поиск в глубину, таких много на литкоде. Самый простой (и медленный) вариант на питоне:
from sys import setrecursionlimit
from textwrap import wrap
setrecursionlimit(100000)
words = open('words.txt').read().split()
def no_repeats(word): return len(set(word)) == len(word)
words = [word for word in words if len(word) == 5 and no_repeats(word)]
def dfs(result, index):
if len(result) >= 25:
print(wrap(result, 5))
return
if index >= len(words):
return
if no_repeats(result+words[index]):
dfs(result+words[index], index+1)
dfs(result, index+1)
dfs("", 0)
Я тоже решал эту задачу, но без ИИ. Что-то мне лень было промпты составлять, интереснее было самому написать.
В итоге вот такие наборы получились
['БОДЯК', 'ВЗМАХ', 'ГНУСЬ', 'ПРИЧТ', 'ШЛЕЙФ'],
['ВЗДОХ', 'ГБАЙТ', 'МЯКИШ', 'ПУЛЬС', 'ФРЕНЧ'],
['ГНЕЙС', 'ДИЧОК', 'ЗУМПФ', 'ХЛЯБЬ', 'ШВАРТ'],
['ЗУМПФ', 'КОРЧА', 'СДВИГ', 'ХЛЯБЬ', 'ШТЕЙН'],
['ЗУМПФ', 'РАЧОК', 'СДВИГ', 'ХЛЯБЬ', 'ШТЕЙН'],
['ЗУМПФ', 'РОГАЧ', 'СКВИД', 'ХЛЯБЬ', 'ШТЕЙН'],
Но в итоге пользуюсь четырехсловными наборами. Так у меня остается 2 попытки чтобы угадать слово.
Задачка выглядит интересной, но она чисто алгоритмическая, к ML отношения не имеет. Исходный набор слов можно ещё сократить если убрать анаграммы. Может имеет смысл попробовать с шестью словами, или пятью шестибуквенными, есть шанс что найдутся решения, возможно даже окажется одно уникальное.
Вы не первый до этой задачи додумались. Поп-математик Мэт Паркер уже популяризировал эту тему. И там это тоже пошло с wordle. Вот видео с его решением. Но он не программист, так что ему в комметариях накидали и ускорили решение в сотни миллионов раз. Так что вот второе видео от него c обзором чужих решений. (Мама, я в телевизоре!)
Решения через динамическое программирование с использованием битовых масок в интернете заоптимизировали так, что бутылочным горлышком становится ввод/вывод, и для словаря со всеми английскими словами оно работает за миллисекунды.
5 слов из 5 букв