Что такое Вордле?
Wordle — это веб-игра в слова, разработанная Josh Wardle. У игроков есть шесть попыток угадать слово из пяти букв; обратная связь дается для каждого предположения в виде цветных плиток, указывающих, когда буквы совпадают или занимают правильное положение. Желтоватый цвет означает, что буква существует, но находится не в том месте, а зеленый означает, что она находится в нужном месте. У Wordle есть одно ежедневное решение, в котором все игроки пытаются угадать одно и то же слово.
Какая лучшая стратегия?
Честно говоря, я понятия не имею. Я всегда сосредотачиваюсь на решателе решения, а не на самом решателе решения. Таким образом, это делает мою главную цель написать лучший создатель стратегии, который чем-то похож на создание шахматного бота. Положительным моментом этого является то, что я буду вычислять только 6 возможных ходов и 5 возможных букв вместо бесчисленных возможностей шахмат.
Начиная
Как всегда, я начинаю с получения базы данных английских слов от NLTK.
После загрузки слов мы избавимся от слов, в которых больше или меньше букв, чем 5.
Теперь слово, которое мы ищем, является одним из 10 422 слов. Наши шансы получить слово с первой попытки составляют ~%0,0096, шансы попасть под удар молнии ~%0,0065. Вот почему нам нужно сочетание шанса и ума.
Во-первых, я пробовал просто случайным образом вводить слова, просто чтобы посмотреть, как часто он на самом деле находит слова. Он был найден примерно за 5404 попытки, что значительно превышает максимальное число, равное 6.
В следующий раз я попытался угадать, соблюдая цвета, используя эти две функции:
Здесь все становится сложнее, потому что мне пришлось создать пустой словарь, в котором будут храниться знания, и передать их следующей попытке в функции, где она также возвращает оставшиеся слова. Ему удалось найти слово примерно за 3,805 попыток, что было намного лучше, чем мои ожидания, по сравнению с таблицей реальных результатов игроков ниже:
Нахождение в топе ~% 50 меня не очень удовлетворило, и я хотел улучшить его еще больше, поэтому я собрал это.
Это частота появления букв в этих 10 422 словах. Это хороший момент для начала, верно? Я хотел изменить начальное слово со случайного на заданное. Вот мой лучший выбор и количество попыток:
Затем я попробовал начальные слова сообщества:
Кажется, что между начальными словами нет большой разницы, но я также могу что-то упустить. Возможно, внедрение порядка букв помогло бы уменьшить среднее количество попыток, но я не нашел базы данных для этого, поэтому я решил закончить эксперимент после того, как попробовал сегодняшнюю головоломку Wordle.
Он нашел слово «ЮМОР» с 5 попыток, хотя немного не повезло, что он не нашел его с 4 попыток…
Спасибо, что прочитали это, мне было весело создавать программу, которая могла бы делать то, что я не могу. Я разместил полный код ниже, если вы хотите его проверить. До встречи в следующем проекте!