|
7 / 6 / 1
Регистрация: 02.12.2022
Сообщений: 59
|
||||||
Коровы и быки. Секретный уровень19.02.2023, 19:49. Показов 11690. Ответов 22
Метки нет (Все метки)
Правила игры «коровы и быки» следующие: компьютер загадывает четырёхзначное число с неповторяющимися цифрами, а игрок пытается его угадать за минимальное число попыток. Угадывающий называет число, а компьютер специальным образом отвечает, сколько цифр совпало с ответом. Если в названном числе цифра какого-то разряда совпала с цифрой в том же разряде правильного ответа, это называется «быком». Если указанная цифра есть в ответе, но на неверной позиции, это «корова». Компьютер отвечает, сколько «быков» и «коров» в числе угадывающего.
Ваша задача — написать для этой игры бота, который будет жульничать, играя за загадывающего, и держаться в игре как можно дольше. Секрет бота в том, что когда игрок называет загаданное число, бот должен поменять число так чтобы новое число не противоречило уже данным ответам. Дополнительно подумайте, как запрограммировать бота так, чтобы он подменял число не только при точном попадании, а, например, когда совпадает существенная часть цифр. И перезагадывал число так, чтобы про новое число было известно как можно меньше. Рекомендации по реализации: Эту задачу будет проще решить, если у вас будут следующие функции: Функция, которая по числу возвращает массив цифр в том порядке, в котором они указаны. Функция, которая принимает два массива цифр: цифры загаданного числа и цифры из попытки отгадать — и считает по ним число быков и коров. Функция, которая проверяет, подходит ли новое «загаданное» число под историю уже данных ответов. Историю ответов можно хранить как список троек вида: (попытка, число коров, число быков). В этой задаче, разумеется, не требуется соблюдать какой-либо формат. Все детали реализации остаются на ваше усмотрение, главное, чтобы бот позволял играть в «Коровы и быки» и перезагадывал число в процессе, не обманывая при этом игрока (не загадывая число, противоречащее прошлым попыткам). Добрый вечер, господа. Вот то ли я дурак, то ли ещё что, но я вообще не понял, как это бот должен перезагадывать число так, чтобы оно не противоречило прошлым попытка. Точнее, я знаю, как это сделать, но я не понимаю самого ТЗ. Вот у нас есть число 6543, мы вводим число 7890. Быков 0, коров 0. Потом мы вводим число 6438. Быков 1, коров 2. А потом мы вводим 6543, и бот загадывает новое число, в котором минимум 1 бык и 2 коровы. Так, что-ли? Я не прошу писать код за меня, прошу помочь с пониманием ТЗ. Но если кто хочет помочь с написанием, то я приложу код (ну и чтобы ленивым меня не называли) )
0
|
||||||
| 19.02.2023, 19:49 | |
|
Ответы с готовыми решениями:
22
Коровы и быки. Секретный уровень Коровы и быки. Секретный уровень Коровы и быки. Секретный уровень |
|
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
|
|
| 19.02.2023, 21:15 | |
|
Есть такое понятие как гарантированное число ходов алгоритма. В данном случае некая последовательность чисел, при которой загаданное число будет угадано, вне зависимости от выдаваемых ответов загадывающего (но все ответы должны быть корректными)
Вот ваш бот и должен реализовывать "наихудший" случай. Мне кажется, что по хорошему это очень сложная задача, но можно реализовать жадный метод. Я назвал его "Жадным Объектно-Приспосабливающимся Алгоритмом". 1. Пусть у нас есть какое-то множество чисел S. 2. Игрок называет некое число. 3. Тогда множество S разбивается на сумму непересекающихся подмножеств S_ij, где i - число быков, j - число коров 4. Выбираем из этих подмножеств подмножество с наибольшей мощностью и делаем вид, что загадано число из этого подмножества. 5. Если мощность этого подмножества равна 1, то игра окончена, иначе делаем S равным этому подмножеству и возвращаемся к шагу 2.
1
|
|
|
7 / 6 / 1
Регистрация: 02.12.2022
Сообщений: 59
|
||
| 19.02.2023, 21:33 [ТС] | ||
|
Ага, у нас есть числа от 1000 до 9999, т.к нам нужны только 4-х значные числа, загадали мы число 6785. Ирок называет его. У нас получаетс 4 быка и 0 коров. И тогда нам нужно выбрать число, где будет 3 быка и 1 корова?
Добавлено через 5 минут
0
|
||
|
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
|
||
| 19.02.2023, 21:38 | ||
|
Dezertir747, во-первых, по условию, как я понял, цифры в загаданном числе не должны повторяться (это не канонические БиК, но таковы правила).
У нас есть Це из 10 по 4 (если можно 0 на первом месте) чисел с различными цифрами. Пусть игрок назвал 6785. Начинаем перебирать наши числа. Берем 1234 - 0 быков, 0 коров. Кладем его в корзину 00. Берем 6543 - 1 бык, 1 корова. Кладем в корзину 11. И так далее по всем числам. В результате в какой корзине будет больше чисел, такой ответ и сообщаем. Добавлено через 2 минуты
0
|
||
|
7 / 6 / 1
Регистрация: 02.12.2022
Сообщений: 59
|
||
| 19.02.2023, 21:39 [ТС] | ||
|
0
|
||
|
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
|
|||
| 19.02.2023, 21:46 | |||
|
0
|
|||
|
7 / 6 / 1
Регистрация: 02.12.2022
Сообщений: 59
|
||
| 19.02.2023, 21:51 [ТС] | ||
|
В какой корзине больше всего будет чисел, из такой корзины выбираем число. А разве сначала нам не нужно загадать число, а потом уже пользователь должен его отгадывать? А ещё нам надо, чтобы новое загаданное число не противоречило ранее данным ответам
0
|
||
|
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
|
|
| 19.02.2023, 22:33 | |
|
Dezertir747, суть хитро выделанного жадного объектно-приспосабливающегося алгоритма, что мы загадываем не число, а множество чисел, удовлетворяющих выданным ответам.
Добавлено через 31 минуту Я понял в чем проблема. ТЗ требует какой-то честности и число загадывать нужно. Тогда лайт-версия алгоритма, назовем ее "периодически обманывающий пользователя калибровочный алгоритм". На 1 шаге загадываем какое-то число. Как и в основном алгоритме - раскладываем числа по корзинам и смотрим сколько чисел попало в корзину с загаданным нами числом и количеством чисел в максимальной корзине. И если отношение превышает некий параметр р, то менять корзину (и загаданное число). Можно менять корзину на максимальную или на одну из нескольких максимальных.
0
|
|
|
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
|
|
| 19.02.2023, 23:05 | |
|
Red white socks,
Не по теме: В детстве играли… Тогда для себя вывел 100% выигрышный алгоритм из 7(насколько помню) шагов, который учитывает хитрость противника, загадывающего не четырех-, а трехзначное число, и, в зависимости от вопросов, «отсеивающего» кандидатов на четвертую цифру. Таким образом его противник гарантированно не мог в течение первых 4 ходов определить состав цифр в задуманном числе. Добавлено через 7 минут А вообще можно создать множество всех чисел по условию ТЗ. Рандомно определять первые два ответа из диапазонов (1…3) / (0…2), удаляя из множества «неверные» варианты. Фильтр можно построить на основе словаря -> «позиция в числе»: цифры-кандидаты…
1
|
|
|
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
|
|
| 19.02.2023, 23:08 | |
|
Gdez,
Не по теме: в приложении Тинькоф есть игра 5 букв и я на этом примере пытался объяснить сыну принцип работы нейронной сети, решающей данную задачу. Полным перебором задача решается быстрее, но это не так интересно)
1
|
|
|
7 / 6 / 1
Регистрация: 02.12.2022
Сообщений: 59
|
||
| 20.02.2023, 21:22 [ТС] | ||
|
0
|
||
|
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
|
|||||||
| 20.02.2023, 22:26 | |||||||
|
Dezertir747,
0
|
|||||||
|
7 / 6 / 1
Регистрация: 02.12.2022
Сообщений: 59
|
|
| 20.02.2023, 22:40 [ТС] | |
|
0
|
|
|
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
|
|
| 20.02.2023, 23:01 | |
|
Dezertir747,
Совет выше изложил (рандомный первый ответ; не «загадывание» числа, а хранение множества «подходящих» чисел; правда словарь не понадобился) А это реализация…
0
|
|
|
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
|
||
| 21.02.2023, 07:21 | ||
|
0
|
||
|
7 / 6 / 1
Регистрация: 02.12.2022
Сообщений: 59
|
||
| 21.02.2023, 20:36 [ТС] | ||
|
[quote="Red white socks;16765172"]ну делайте на плюсах тогда, что ли...[/qu
0
|
||
|
1 / 1 / 0
Регистрация: 10.01.2022
Сообщений: 2
|
|
| 06.03.2023, 01:32 | |
|
извините, что душню, но числа мы берём не радномные, а только те, у которых разные цифры, а это насколько я помню:
(9*10*10*10) - всего 9000 чисел, пусть на каждое мы тратим 5 операций, тогда на один запрос нам нужно 45000 операций, а это на нормальной системе: 0,0045с Добавлено через 12 минут ой, (9*9*8*7) - 4536 чисел, 22680 операций, 0,002268с
0
|
|
|
0 / 0 / 0
Регистрация: 20.02.2023
Сообщений: 3
|
||||||
| 18.03.2023, 12:43 | ||||||
0
|
||||||
|
Йуный плагиат-падаван)
176 / 119 / 45
Регистрация: 17.10.2022
Сообщений: 566
|
||||||
| 18.07.2023, 15:17 | ||||||
Только он почему-то ломается ![]() Enter your guess: 1023 Cows: 0, Bulls: 2 Enter your guess: 1045 Cows: 0, Bulls: 2 Enter your guess: 1067 Cows: 0, Bulls: 2 Enter your guess: 1089 Cows: 1, Bulls: 2 Enter your guess:
0
|
||||||
| 18.07.2023, 15:17 | |
|
Помогаю со студенческими работами здесь
20
Быки и коровы
Как написать оценку хода к "Быки и коровы"? Быки и коровы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|