Комментарии 6
Мне кажется, что стратегия, запрещающая ввод заведомо неподходящих слов (то есть тех, которые были отсечены ответами на предыдущих шагах), является неоптимальной. По крайней мере на начальном этапе — пока вероятность угадать всё целиком на текущем ходу достаточно мала.
Если, например, на первом-втором шаге мы нашли зеленую букву, то имеет смысл извлечь больше информации, подставляя на это место другие буквы вместо найденной.
Для желтых букв менее очевидно, нужно поточнее посчитать, которая из двух стратегий в какой ситуации более выгодна: (1) пытаться найти место для найденной желтой буквы (так делает алгоритм автора), либо (2) не использовать найденную желтую букву, а вместо этого проверить какую-то другую букву.
Все это описано в рассказе Эдгара По Золотой жук
Вариант попроще =)
with open("all_words.txt") as f:
all_words = f.readlines()
yes = ["s", "", "i", "", "e"]
no = ["p", "a", "w", "n", "u", "m", "l", "t"]
def WordleCheat(in_all, in_yes, in_no):
out = []
for i in in_all:
if all((y not in i) for y in in_no):
if all(in_yes[j] == i[j] or in_yes[j] == "" for j in range(5)):
out.append(i[:-1])
return out
print(WordleCheat(all_words, yes, no))
Мой вариант решателя на js для русской версии игры (ищет по списку слов):
Wordle Cracker (torrua.github.io)
Крутая штука. Только букву ё некорректно обрабатывает. В Wordle ее то ли совсем нет, то ли она равне е.
Как решить популярную в 2022 головоломку Wordle на Python