Можно было бы докрутить этот алгоритм и в итоге сделать что-то среднее между оптимальным и "человеческим" алгоритмами, но у меня цели такой не было. Плюс, как мне кажется, такой алгоритм все равно работал бы не лучше оптимального
В целом мне просто хотелось посмотреть, насколько хуже оптимального алгоритма будет работать такой прямолинейный алгоритм, который всегда пытается подстраиваться под маску ответа)
Не сильно знаком с "Быками и коровами", но видимо да, что-то похожее есть
Разница в том, что в "Быках и коровах" игра ведется с цифрами, а не с буквами, плюс игра не предоставляет информацию по каждой введенной цифре отдельно, а возвращает агрегированную информацию, сколько в целом цифр угадано
Во всяком случае, судя по той инфе, что я нагуглил об этой игре)
Тут просто всё дело в используемых словарях. Для имитации словарей Т-Банка у меня получился такой словарь с ответами, что слова струг в нем нет. Но это лишь имитация и мое предположение, и почти наверняка этот словарь не полностью совпадает с реальным словарем ответов Т-Банка
Если рассматривать словари вообще всех слов, что я нашел, то да, там есть и сбруя, и струг
P.S. сбруя в этом кейсе не подходит в качестве ответа, потому что в ней нет буквы "т"
Конкретно для слова пилот получилась вот такая статистика:
Место: 842 из 4109
Среднее кол-во оставшихся ответов: 134.9448
Максимальное кол-во оставшихся ответов: 396
Может быть, результаты хуже, потому что в нем нет буквы "а"
Вообще, это всё очень сильно зависит от используемых словарей, и прям конкретные числа смотреть смысла не очень много. Но если какие-то значения для слов отличаются на порядок, то да, тогда можно примерно оценить, какое слово лучше или хуже)
Я пытаюсь разобраться в коде, который выглядит как код супер‑сеньора с 25-ти летним стажем. Первое, что напрягает — его запулил джуниор.
Мне нравится вот такая фраза: "сеньор обычно пишет такой код, в котором при желании сможет разобраться и джун; а джун иногда может написать такой код, что и сеньор не разберется"
На мой взгляд, в коде не в последнюю очередь важна именно его поддерживаемость, и если какой-нибудь копилот пишет код, в котором потом сложно разобраться, то это скорее плохой код
Собственно, дело в том, что у алгоритма нет цели сразу пытаться найти правильное место для буквы в ответе; цель просто подобрать такое слово, после ввода которого в итоге отфильтруется как можно больше возможных ответов. Ну и так получилось, что пенис был лучшим словом. А то что в пенисе есть буква "н" - это просто совпадение
На самом деле в статье описан алгоритм, который всегда подстраивается под маску ответа. Я этот алгоритм назвал "человеческим, ну и работает он хуже, чем оптимальный
Вы абсолютно правы!
Можно было бы докрутить этот алгоритм и в итоге сделать что-то среднее между оптимальным и "человеческим" алгоритмами, но у меня цели такой не было. Плюс, как мне кажется, такой алгоритм все равно работал бы не лучше оптимального
В целом мне просто хотелось посмотреть, насколько хуже оптимального алгоритма будет работать такой прямолинейный алгоритм, который всегда пытается подстраиваться под маску ответа)
Ну да, слова с повторяющимися буквами точно могут быть загаданы. Не удивлюсь, если когда-нибудь будет загадано что-то вроде
атака
илиолово
Просто если проверять разные буквы, то это дает больше информации. Поэтому в старте из n слов проверяются уникальные буквы
Не сильно знаком с "Быками и коровами", но видимо да, что-то похожее есть
Разница в том, что в "Быках и коровах" игра ведется с цифрами, а не с буквами, плюс игра не предоставляет информацию по каждой введенной цифре отдельно, а возвращает агрегированную информацию, сколько в целом цифр угадано
Во всяком случае, судя по той инфе, что я нагуглил об этой игре)
Тут просто всё дело в используемых словарях. Для имитации словарей Т-Банка у меня получился такой словарь с ответами, что слова
струг
в нем нет. Но это лишь имитация и мое предположение, и почти наверняка этот словарь не полностью совпадает с реальным словарем ответов Т-БанкаЕсли рассматривать словари вообще всех слов, что я нашел, то да, там есть и
сбруя
, иструг
P.S.
сбруя
в этом кейсе не подходит в качестве ответа, потому что в ней нет буквы "т"Действительно, спасибо за замечание
Поправил статью и добавил уточнение об этом факте
Добавил в репозиторий статистику для всех стартовых слов: https://github.com/kadukm/five-letters/blob/master/research_results/beginnings/2066_4109.md
Конкретно для слова
пилот
получилась вот такая статистика:Место: 842 из 4109
Среднее кол-во оставшихся ответов: 134.9448
Максимальное кол-во оставшихся ответов: 396
Может быть, результаты хуже, потому что в нем нет буквы "а"
Вообще, это всё очень сильно зависит от используемых словарей, и прям конкретные числа смотреть смысла не очень много. Но если какие-то значения для слов отличаются на порядок, то да, тогда можно примерно оценить, какое слово лучше или хуже)
Проверил это слово на словарях из статьи. Получилось вот что:
Место: 181 из 4109
Среднее кол-во оставшихся ответов: 95.7113
Максимальное кол-во оставшихся ответов: 242
В целом кажется и правда вполне неплохое слово для старта
Мне нравится вот такая фраза: "сеньор обычно пишет такой код, в котором при желании сможет разобраться и джун; а джун иногда может написать такой код, что и сеньор не разберется"
На мой взгляд, в коде не в последнюю очередь важна именно его поддерживаемость, и если какой-нибудь копилот пишет код, в котором потом сложно разобраться, то это скорее плохой код
Хех, прекрасный комментарий)
Собственно, дело в том, что у алгоритма нет цели сразу пытаться найти правильное место для буквы в ответе; цель просто подобрать такое слово, после ввода которого в итоге отфильтруется как можно больше возможных ответов. Ну и так получилось, что
пенис
был лучшим словом. А то что в пенисе есть буква "н" - это просто совпадениеНа самом деле в статье описан алгоритм, который всегда подстраивается под маску ответа. Я этот алгоритм назвал "человеческим, ну и работает он хуже, чем оптимальный