значит будут ставить туда слова "на злобу дня"
Слова из пяти букв, на злобу дня? И какое же слово у вас сегодня вызывает злобу? И под кровать фонариком посветите. Наверняка там притаился злобный хакер ЦРУ. Со словарем.
Если ждать не охота, то можно взять словарик и самому такую програмку написать быстро, чтобы в неё играть.
Все уже украдено до нас:
https://hellowordl.net А вообще, знающие люди говорят, что клонов - десятки, чуть ли не сотни.
И похоже, что буквы могут повторяться: если в тестовом слове их больше, чем в загаданном, лишние останутся серыми, нелишние будут покрашены по правилу в зеленый/желтый.
Мой опыт игры показывает, что да, примерно так. А если в загаданном слове две одинаковые буквы и в тестовом две, но на других позициях, то угаданная позиция будет подсвечена зеленым, а неугаданная - желтым. Если обе не угаданы - то обе желтые.
Вот кто-то на хабр уже написал: Как решить популярную в 2022 головоломку Wordle на Python
Посмотрел по диагонали - статья так себе, вчитываться не хочется. Я поиграл прошлую неделю немного, и на выходных попробовал покодить (но не закончил). На SQL, естественно, всякая императивщина - это не наш метод
Во-первых, слова не нужно брать из словарей - они есть в джаваскриптовом коде страницы с игрой. Там два массива, в первом 2315 слов, во втором - примерно 14000. Как я понимаю, слова из первого массива - это те, которые могут быть загаданы, а из второго - которые можно использовать для угадывания.
Во-вторых, там автор зачем-то высчитывает процент, хотя это не имеет смысла. Просто считаем сумму, сколько раз каждая буква встречается - этого достаточно. Ну и еще что-то по мелочи было. Но как учебник по питону может и сойдет.
Крайне маловероятно что такая стратегия оптимальна. Например она никогда не спрашивает слова, которые уже точно не подходят, а это вполне может быть выгодно.
Не "вполне может быть", а "100% так", я бы сказал. Мне представляется близкой к оптимальной такая стратегия:
1. Анализируем "основной массив" (2315 слов). Считаем для каждой буквы, сколько раз она встечается на каждой позиции.
2. Берем оба массива, для каждого слова считаем балл: для каждой буквы берем число раз, сколько она встречается на данной позиции, суммируем.
3. Выбираем в качестве первого слова то, у которого максимальный балл. У меня получилось, что это слово SLATE.
4. Дальше в цикле повторяем следующие шаги:
4.1. Фильтруем первый массив, находим слова, которые подпадают под ограничения.
4.2. Если слов 1 или 2, пробуем по очереди
4.3. Если слов 3 или больше, то считаем статистику еще раз по этой фильтрованной выборке.
4.4. Выбираем буквы, которые еще не пробовали подставлять (то есть про них неизвестно, есть они или нет).
4.5. Выбираем из обоих массивов слово, которое содержит максимальное количество наиболее частых букв из набора с предыдущего шага.
4.6. Пробуем, возвращаемся на шаг 4.1.
Но тут нужно аккуратнее. Начиная с некоторого количества желтых букв (3 - 4 наверно), иногда может быть более выгодно на шаге 4.5 выбирать слово с желтыми буквами, но на других позициях. Это сильнее сузит круг "подозреваемых".
Насчет "крайне маовероятно" - это слишком сильное заявление, имхо.
Наоборот, слишком слабое
(пример во вложении)
Как раз попалось это слово - как по заказу.
Есть, кажется, 7 слов окончанием *OUND. Первые буквы - S, P, W, H, B, R, F.
S выбывает - за счет слова SLATE, F - за счет FOUND. Берем слово POWER - оно содержит 3 из оставшихся пяти букв. Если бы все были серые, осталось бы только 2 варианта. А перебирать 5 по одной букве - есть шансы не уложиться.
P. S. Бонус-трек!
Если хочется быстро играть, выключив мозг, то SLATE + FOUND + BIRCH + VAMPY покрывают 19 из 26 букв, с 4 - 5 попытки практически любое слово угадывается. Частенько - с третьей. Я даже в словарь почти не заглядываю.