Pull to refresh

Comments 52

Попробовал первую попавшуюся онлайновую версию, что выдал Bing, и на первое же слово из пяти букв оно мне сказало, что такого слова нет :D Как так-то: сущность есть, а слова нет :D

Если серьёзно, то мне пришло в голову словарь всё-таки изначально отсортировать по критерию насколько часто в слове встречаются в полном словаре входящие в него буквы. Детально пока что не продумывал, но, поломаю голову - тема интересная.

В словаре действительно могут быть не все слова. В ту игру, которую играю я (ссылка в статье) тоже загадала пару раз слова, которых нет (об этом кстати написано в статье). Постепенно словарь можно наращить. Merge requests are welcome :-)

Как так-то: сущность есть, а слова нет :D

Жопа есть, а слова нет (с)

Ваше слово на букву Ж состоит из 4 букв, а не из 5. Поэтому и нет :)

Игра, которую вы описали, более известна как "Быки и коровы" и вот в её классическом варианте как раз слова из 4 букв были :)

Да я просто пошутить (тоже?) хотел :)

Не время улыбаться!

В случае канона
Если б словаре было слово например Кавун
Там подбором идёт? Пока не совпадает?

Оно может "выродиться" в простой подбор. Такое случается если например остались возможные слова "кошка, конка". Оба кандидата имеют одинаковые шансы быть загаданными.

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

Ну что вы начинаете, в реальной жизни алгоритмы никому не нужны же :)

Подсчет метрики - это кубический алгоритм. Поэтому там для текущего словаря (2068 слов) и первой попытки - это 2068^3 операций. На вторую попытку остаетс около 100 слов и там поиску уже идем "мгновенно". Остальные попытки - разумеется еще быстрее.

Статья уже была написана и готова к публикации как вдруг игра загадала слово “канон”

дайте угадаю, речь про тиньков идет? У них есть такая игра в банковском клиенте. Там как раз и скула последнее слово, и канон был пару дней назад.

Я тоже сделал что-то похожее на статью - взял отфильтрованный по длине словарь hunspell, для каждой буквы посчитал, в каком количестве слов она встречается, и назначил каждому слову скор как сумму скоров для его букв, не считая повторов. Для каждого запроса скрипт на питоне выводит список подходящих слов, отсортированный по скору. Топовое начальное слово - икота, но я предпочитаю океан. Работает достаточно хорошо, например "океан" -> "акрил" -> "скула". За все время проиграл только один раз: получилось "*есть", но первую букву (весть, жесть, месть, лесть, честь) выяснить не удалось.

А вообще смысл игры в том, чтобы угадывать без помощи компьютера :)

Проверил словарь на наличие слов: "весть", "жесть", "месть", "лесть", "честь". Все на месте, кроме слова "честь". Его я добавил в словарь. Слово "катер" осталось неизменным лидером в качестве первого кандидата. Ни одно из вышеупомянутых слов не стало проблемным. В списке проблемных так и остались только 2 слова: гряда, щепка.

[UPD]: Речь идет действительно про Тинькофф. Мне казалось, что это будет понятно по предоставленным ссылкам :)

Я решил эту игру играть вот так: с помощью нейросети подобрал 5 слов, которые используют 19 уникальных букв. После ввода всех 5 слов всё еще остается пространство для подумать, т.е. поиграть. Отгадано 24 из 25 слов.

Какая нейронка справилась ? Gemeni тупит.

Deep seek изобретает свои слова .

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

https://valyashmelev.github.io/wordle-helper/

Забрал у Вас словарь, спасибо )

Итого теперь 3473 слова.

В качестве первой попытки теперь должно быть слово: "норка" (3 минуты для получения).

Проблемных слов теперь 53: бабка, вояка, дачка, дежка, заика, замор, запор, качка, койка, ласка, лачка, мекка, мочка, мошка, наход, пайка, палка, пилка, пучка, сайка, самка, сивка, силка, симка, сотка, сошка, сушка, терка, тетка, течка, точка, турка, фаска, феска, хамка, хатка, холка, цапка, цацка, чайка, чалка, чарка, чашка, через, честь, четка, чурка, шайка, шитье, шишка, щетка, щурка, щучка.

Вероятность выигрыша по этому словарю составляет 98,4%.

В Вашем словаре отсутствуют следующие слова: жилое, любое, рябая, сытая, умная, чалая, худое, мамон. Все, кроме "мамон", скажем так, как минимум прилагательно-подобные. Скорее их надо удалить из моего словаря. А вот слово "мамон" кажется надо добавить в Ваш.

Теперь есть повод задуматься на тем, что игра дает больше информации, чем использует модель.

P.S. Добавление слова "мамон" в словарь не меняет ни первого кандидата, ни множества проблемных слов. Вероятность выигрыша разве что незначительно повышается :-)

Я только начинающий, поэтому я очень рад, что моя деятельность принесла кому-то пользу, спасибо за обратную связь!)

UFO landed and left these words here

Я думаю можно.

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

То, про что Вы говорите как раз и является тем же подходом, но не с глубиной 1 - а с глубиной 2.

Для первого кандидата сложность будет порядка 3475^6=1760876321572509765625.

Для второй попытки уже может быть значительно меньше (если мы выбрали слово "норка"): 101^6=1061520150601, но всё ещё достаточно большой.

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

UFO landed and left these words here
UFO landed and left these words here

Когда один популярный банк некоторое время назад (больше года, но не помню, когда именно) сделал игру 5Букв, я задался вопросом о самом выгодном первом слове. Написал скрипт, взял за основу открытый словарь существительных. У меня получилось другое самое выгодное слово (если кому интересно, это слово "икота"), а "катера" даже в топе не было. Может, словари разные, не знаю... Но даже если просто подумать, три популярные гласные выгоднее двух, поэтому "икота" выглядит более правдоподобно. На втором месте с минимальным отрывом была "икона", кстати, и её я в один из первых дней придумал в качестве базового слова безо всякого скрипта.

Я реализовывал подбор с учётом частоты нахождения буквы в каждой позиции и оптимальным первым словом у меня получилось "ПОРКА"

UFO landed and left these words here

По поводу сокращения словаря: да, действительно так и работает.

Вот немного сухой статистики.

  • Метрика слова "норка": 101 слов. Статистика: 53 проблемных слова.

  • Метрика слова "порка": 118 слов. Статистика: 44 проблемных слова.

  • Метрика слова "икона": 146 слов. Статистика: 66 проблемных слов.

  • Метрика слова "океан": 146 слов. Статистика: 61 проблемное слово.

  • Метрика слова "коран": 111 слов. Статистика: 42 проблемных слова.

Лидер по минимальному количеству проблемных слов: "коран". В общем-то, это то, о чем я говорил в статье: жадность не 100% решение, так как можно упереться в локальный минимум.

Когда остается две или три неотгаданные буквы, лучше не подбирать слова с сохранением угаданных, а выбрать слово, содержащее максимум букв из возможных отставшихся вариантов. Тогда исключается сценарий потери нескольких ходов в попытках подбора. Теряется только один ход.

Играю таким способом в "octordle" на сайте britannica.com

UFO landed and left these words here

Поленился писать код.

Первый раз поиграл мозгом. Верный ответ нашел, но было тяжко.

Почесал репу, и выработал такой подход:

Сначала ввожу четыре слова, которые подобраны так, чтоб перебрать все гласные без повтора букв.

Далее этого пробую искать пятое слово по вхождению и исключению букв из первых четырех, вот этот сервис неплохо подходит. Зачастую на этом этапе правильный ответ очевиден.

Но если поиск возвращает много результатов, то для его сужения выбираю слово с другими согласными с помощью того же сервиса, после чего снова повторяю поиск по вхождению и исключению.

Одна неудача за всё время. Времени на сей комментарий потратил больше, чем на 5 раундов игры.

UFO landed and left these words here

Вот в этом комментарии выяснилось, что мой словарь (2068 слов) несколько ограничен. По более полному словарю (3474 слова) моё топовое слово: "норка". Интересно, что "норка" и "коран" являются палиндромами. Для Вашего метода метрика этих двух слов одинаковая. Моя модель считает, что "норка" всё же лучше. Правда насколько я сейчас не могу сказать. Но можно поэкспериментировать. Видимо нужно ввести 4 режим работы: подсчет метрики для конкретного слова.

  • Значение моей метрики для слова "норка": 352401.

  • Значение моей метрики для слова "коран": 386809.

UFO landed and left these words here

Смотрите, метрика учитывает только одно: сколько подходящих слов останется в среднем (после получения обратной связи от игры). Те значения, которые я привел выше нужно еще поделить на размер словаря.

Итого:

  • Для "норка": 352401/3475\approx101слово.

  • Для "коран": 386809/3475\approx111слов.

Я добавил четвертный режим работы: вычисления метрики для слова. Можно теперь проделывать эти эксперименты самостоятельно.

UFO landed and left these words here

Вот в этом комментарии выяснилось, что ограниченный. Для более полного словаря (3474 слов) это слово: "норка".

UFO landed and left these words here
UFO landed and left these words here
UFO landed and left these words here

Я никак не учитываю частоту букв. Положение букв учитываю в ограничениях:

  • жёлтый: точное совпадение

  • белый: присутствие буквы и отсуствие ее на позиции

  • серый: отсутствие букву

Рекомендую подсчитать еще статистики и обратить внимание на количество проблемных слов.

Что касается Вашей метрики - она совсем другая. Вероятнее всего тоже имеет место быть.

UFO landed and left these words here
UFO landed and left these words here

Как я уже написал выше: рекомендую обратить внимание на статистику.

  • Слово "серка": 51 проблемное слово.

  • Слово "кроат": 49 проблемных слов (близко к лидеру!)

  • Слово "кайло": 36 проблемных слов (а вот и лидер, который обогнал "коран"!)

UFO landed and left these words here

Ну ... и ничего страшного. Еще и слова "тренд" нет. Оба добавил. Едем дальше.

Проанализировал Ваш словарь - он в точности повторяет мой, за исключением слов, которые я добавил: коран и мамон. +Теперь еще бренд и тренд.

P.S. Сегодняшнее слово все равно отгадал :-)

Мои начальные слова такие: Стенд, кварц, Олимп, гуашь.

Подбирал по сервису исходя из двух факторов:

1) частота букв

2) старался не использовать топ гласных в начале, чтобы на последующие слова было больше вариантов

Уверен, что возможно это не самые оптимальные слова, но не угадывать слова с ними у меня ещё ни разу не получилось)

Подкрутил немного метрику и теперь отгадываются все 100% слов словаря в рамках 6 попыток. Соответствующий коммит.

Тут уже много говорили о том, что при угадывании 3-4 букв может начаться "информационный голод". Пример из одного комментария: весть, жесть, месть, лесть, честь.

Идея в том, что нужно подобрать такое слово, чтобы как можно больше таких вариантов отсеить за раз.

Что доделано в итоге.

  • Каждая попытка теперь может использовать все слова из словаря, а не только из оставшихся.

  • Мы предполагаем, что слова загадываются из словаря и поэтому должно остаться хотя бы одно слово. Если слово вычеркивает все оставшиеся слова (оно теперь может это делать), то получает не нулевое значение метрики, а наоборот - самое наибольшее. Самое наибольшее значение - это количество оставшихся слов.

  • Отдельно нужно обработать случай когда осталось одно слово - и тут в качестве кандидата нужно его просто вернуть. Это нужно отдельно обрабатывать, так как в противном случае метрика (после всех изменений выше) будет одинакова для всех слов словаря. Это происходит по причине того, что подходящее слово имеет значение метрики в рамках одного предположения всегда 1, так как оно: либо все слова отсеивает и получает значение 1, либо оставляет только загаданное слово и получает тоже значение 1.

Сделал из спортивного интереса тоже себе решатель, отгадывает 100% слов. Заодно и сама игра тоже есть - два в одном. Доступно оналйн: https://alexbobrow.github.io/five-js/

Текущее состояние: отгадывание всех слов из словаря объемом 7911 слов, с использованием в качестве атакующих около половины этих слов. Универсильно подходит как для Wordly, так и для желтого банка. Отгадывает 100% слов.

Оформлено в виде бота в телеге: @five_l3tt3rs_ru_bot.

Sign up to leave a comment.

Articles