Быки-Коровы Игра онлайн Решение программы за 6 ходов
Не надо бояться решать задачи перебором! Даже если, на первый взгляд, количество вариантов кажется огромным…
Нужно, всего лишь, тщательно обдумать условие задачи и выявить ряд ограничений… А каждое ограничение в разы сокращает перебор…
- Метод перебора вариантов в игре Быки-Коровы
- Правила и варианты игры
- Этапы решения задачи для алгоритма
- Суть Алгоритма и стратегия игры Быки и Коровы (скачать программу)
- Где похожие задачи? Перспективы прикладного применения
- О варианте игры Быки и Коровы с буквами и словами
- Калькулятор - это автоматизация
Таким образом, после наложения всех ограничений (произведения вероятностей) число вариантов, как правило, становится вполне приемлемым.
Метод перебора вариантов в игре Быки-Коровы
Необходимость в методе перебора возникает всякий раз, когда «неизвестных» больше, чем ограничений (условий или причинно-следственных связей). Любое уравнение - это пример такого ограничения (причинно-следственной связи).
Если уравнение одно, а неизвестных переменных две, то решение такого уравнения имеет несколько решений (не единственное).
Да, в этом случае в одну переменную в цикле, поочередно вставляем все допустимые значения и после этого получаем "одно уравнение - одна неизвестная".
Рис.1 Метод перебора вариантов в игре Быки-Коровы Калькулятор - решето размещений
На этом рисунке показано, как три ограничивающих условия «вопрос-ответ» сокращают количество вариантов размещений с 5040 до 3 !!!
Вот такой калькулятор (решето) для игры БЫКИ-КОРОВЫ, который отсеивает все не нужные варианты размещений!
Если ехе-файл Вас не удовлетворяет (например, хотите получить ответ на телефоне), то web-версия калькулятора обладает ровно той же функциональностью.
Отзыв из г.Миасс Челябинской области 27 августа 2024 года:
«Спасибо, с помощью калькулятора начал легче понимать игру и стал более последовательно работать с информацией»
скачать exe-файл для тестирования
Правила и варианты игры
Игроки загадывают (каждый свое) числа из четырех не повторяющихся цифр и, делая поочередно ходы (свой вопрос + ответ от противника), стремятся как можно быстрее отгадать число соперника.
На первом ходе, как правило, называется случайное число, но в ответ на эту попытку,
соперник должен сообщить о количестве «быков и коров», давая этим самым ориентир, насколько близка эта попытка к истине
«Бык» - верно угаданная цифра, находящаяся в нужном месте (позиции) этого числа
«Корова» - угаданная цифра (присутствующая и в числе-попытке соперника, и в загаданном Вами числе), но находящаяся в другом месте (неправильной позиции) этого числа
Пример:
Если Вы задумали «3456», а соперник делает ход-вопрос «1465», то Вы должны сообщить ему следующую информацию: «1 бык и 2 коровы»,
так как цифра 4 находится на второй позиции в обоих числах (это бык), а цифры 5 и 6 присутствуют, но их позиции не верны,
то есть это две коровы. Ну и, единица (цифра 1) не является ни быком, ни коровой, так как в задуманном Вами числе отсутствует.
Понятно, что при подсчете быков и коров, надо быть не просто честным, но и предельно внимательным,
так как ошибочная информация введет соперника в заблуждение, а Вам в этом случае положена «дисквалификация».
Этапы решения задачи для алгоритма
Первое, что необходимо - это умение подсчитывать количества «быков-коров», в задаваемых противником вопросах. Это не сложно и в Интернете достаточно примеров…
Второе, что необходимо - это решето, по отсеиванию «забракованных» размещений после каждого ответа противника…
И третье - это алгоритм, который бы выдавал «следующий оптимальный вопрос».
Для справки: в Википедии игра названа «легкой».
Суть Алгоритма и стратегия игры Быки и Коровы (скачать программу)
Я могу доказать, что на седьмом ходе, программа не вопрос задает, а уже 100% результат сообщает. Тем не менее, противник получает право на седьмой ход. С правилами не поспоришь. Поэтому кто-то обоснованно может назвать этот алгоритм "за 7 ходов", но я считаю, что все-таки за 6…
Рис.2 Суть Алгоритма и стратегия игры Быки и Коровы (скачать программу) Об алгоритме игры Быки и Коровы
Решатель - это симбиоз "решета" по отсеиванию размещений и умения задавать умно-оптимальные вопросы.
А еще необходимо перепроверять пользователя, чтобы он не ошибся в подсчете быков и коров…
6-ой ответ противника на вопрос - это максимум, чтобы в решете остался один вариант (даже при самом плохом раскладе). Если вопросы задаешь «умные». А за пять ходов-ответов - это невозможно гарантировать. Только, на удачу! Но, на удачу, и с первого хода может получиться…
Флажок «с гарантией за 6 ходов» можно снимать, если играете с человеком, а не с другой программой или сервисом. Быстрее выиграете… Но с противником-машиной такие вольности не пройдут.
скачать exe-файл для тестирования
Где похожие задачи? Перспективы прикладного применения
Может кто-нибудь предложить прикладное применение этому алгоритму (приложению)?
Где похожие задачи? Перспективы прикладного применения
видео смотреть/скачать
Ведь «маленькие кусочки информации» машина увязывает в одно целое и на основании этого получается «достаточная информация» для принятия решения о следующем вопросе (остальные функции тривиальны).
Хотелось бы такую идею услышать и поучаствовать в ее реализации.
О варианте игры Быки и Коровы с буквами и словами
Понятно, что алгоритм принципиально не меняется. Вот только если цифр всего 10, то букв (пусть без Ё) в русском алфавите 32. И слова из 4 букв составлять - будет скучновато. А если из 5 букв, то...
Имеем число размещений А из 32 по 5 = 32*31*30*29*28 = 24 165 120. Это против 5040 (было в варианте из 4 цифр). В общем, компьютеру предстоит работать дольше.
Правда, Яндекс утверждает, что в его базе данных около 8 миллионов слов из 5 букв. Не знаю, стоит ли завязываться на словарь? Или все же все комбинации учитывать?
Рис.3 О варианте игры Быки и Коровы с буквами и словами Сокращение (отсев) с 24 млн до 6 вариантов
Этот буквенный калькулятор - здесь
Я не собираюсь навязывать Вам свое мнение, но считаю, что Яндекс очень упрощает решение задачи, показывая подсветкой "желтой - коров" и "зеленой - быков", поэтому и попыток дается достаточно мало. Конечно, там расчет на возможности человека, а не компьютера...
А Вы как считаете, какой вариант для калькулятора предпочтительнее?
Калькулятор - это автоматизация
«Быстро» – даже если внедрение нового процесса влечет какие-то потери (ресурсов, времени), то легко посчитать выигрыш за счет повышения КПД в дальнейшем. И, конечно, ни один руководитель (предприниматель) не пойдет на затраты прежде, чем убедится (на основе расчетов) в их целесообразности.
«Эффективно» - человеческий фактор все чаще и чаще воспринимается как «слабое звено» в производственной цепочке. Человек, просто, не может работать, как автомат. Я даже не о конвейере…. Даже в документообороте большинство ошибок – это вина человека, сотрудника.
«Недорого» - опять же выгода считается очень просто. Что было и что станет после внедрения? За какое время все затраты окупятся и пойдет чистая прибыль от экономии рабочего времени (за счет повышения КПД).
Автоматы не скандалят, не болеют, не прогуливают, а безошибочность и скорость их работы несравнимы с нашими возможностями. Единственный их недостаток – не так универсальны! Автомат затачивается и настраивается, как правило, на одну или всего несколько операций (любой человек способен на большее количество видов деятельности).
Калькулятор - это автоматизация
видео смотреть/скачать
Рис.4 Калькулятор - это автоматизация Автоматическое составление карт раскроя (пример)
Я не собираюсь навязывать Вам программные продукты, но как очень простой пример автоматизации – использование калькуляторов, которые освобождают Ваш персонал от утомительных ежедневных расчетов.
Здесь бесплатный калькулятор линейного раскроя (доски, трубы, уголок, арматура, металлический и пластиковый профиль). Интерфейс специально примитивный, т.к. я мечтаю привязать движок к Вашей базе даных (т.е. доработать программу конкретно под Ваши требования).
скачать exe-файл для тестирования
Другие примеры на тему «Компьютерные игры. Решающие калькуляторы»
Если у Вас остались вопросы, то задать их Вы можете, нажав на эту кнопочку ...
Поделиться в соц сетях: