Pull to refresh

Comments 6

Мне кажется, что стратегия, запрещающая ввод заведомо неподходящих слов (то есть тех, которые были отсечены ответами на предыдущих шагах), является неоптимальной. По крайней мере на начальном этапе — пока вероятность угадать всё целиком на текущем ходу достаточно мала.

Если, например, на первом-втором шаге мы нашли зеленую букву, то имеет смысл извлечь больше информации, подставляя на это место другие буквы вместо найденной.

Для желтых букв менее очевидно, нужно поточнее посчитать, которая из двух стратегий в какой ситуации более выгодна: (1) пытаться найти место для найденной желтой буквы (так делает алгоритм автора), либо (2) не использовать найденную желтую букву, а вместо этого проверить какую-то другую букву.

Пока с коллегами в битве "разные буквы по максимуму" vs "одинаковые буквы по максимуму" побеждает вторая стратегия. Но первая, конечно меньше шансов слить слово целиком (вообще не угадать). Ну и мизерно шансов победить на 2-3 ходу by design.

Все это описано в рассказе Эдгара По Золотой жук

Вариант попроще =)

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))

Крутая штука. Только букву ё некорректно обрабатывает. В Wordle ее то ли совсем нет, то ли она равне е.

Sign up to leave a comment.