Язык программирования Python.
Игра «Компьютер угадывает число»
Поменяйте мальчика и компьютер из прошлой задачи местами. Теперь мальчик загадывает число от 1 до 100 (включительно). Компьютер может спросить у мальчика: «Твоё число равно, меньше или больше, чем число N?», где N — число, которое хочет проверить компьютер. Мальчик отвечает одним из трёх чисел: 1 — равно, 2 — больше, 3 — меньше.
Напишите программу, которая с помощью цепочки таких вопросов и ответов мальчика угадывает число.
Дополнительно: сделайте так, чтобы можно было гарантированно угадать число за семь попыток.
Ответы на вопрос
Для решения этой задачи на Python лучше всего использовать метод бинарного поиска. Он позволяет компьютеру угадать число от 1 до 100 максимум за 7 попыток.
Код программы
Как работает программа?
Сначала компьютер устанавливает границы поиска:
left = 1иright = 100.Выбирает число посередине диапазона с помощью формулы
(left + right) // 2.Спрашивает у мальчика, равно ли загаданное число предложенному, больше или меньше.
Если мальчик отвечает
1, компьютер угадал число и завершает программу.Если ответ
2, загаданное число больше предложенного, поэтому нижняя граница увеличивается.Если ответ
3, загаданное число меньше предложенного, поэтому верхняя граница уменьшается.Компьютер повторяет действия, пока не угадает число.
Пример работы программы
Допустим, мальчик загадал число 73.
Загадай число от 1 до 100.
Я попробую его угадать!
Твоё число равно, больше или меньше 50?
Твой ответ: 2
Твоё число равно, больше или меньше 75?
Твой ответ: 3
Твоё число равно, больше или меньше 62?
Твой ответ: 2
Твоё число равно, больше или меньше 68?
Твой ответ: 2
Твоё число равно, больше или меньше 71?
Твой ответ: 2
Твоё число равно, больше или меньше 73?
Твой ответ: 1
Я угадал число: 73
Количество попыток: 6Почему компьютер гарантированно угадает число за 7 попыток?
При бинарном поиске после каждого неправильного предположения количество возможных чисел уменьшается примерно вдвое.
Например:
После 1-й попытки остаётся не более 50 чисел.
После 2-й — не более 25.
После 3-й — не более 12.
После 4-й — не более 6.
После 5-й — не более 3.
После 6-й — не более 1.
На 7-й попытке компьютер обязательно угадает оставшееся число.
Это также можно подтвердить формулой:
Итог: программа использует бинарный поиск, благодаря которому компьютер гарантированно угадает любое число от 1 до 100 не более чем за 7 попыток, если мальчик отвечает правильно.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili

