Два друга петя и вася играют в игру «угадай целое число». петя задает
диапазон [x; y], а вася загадывает число из указанного диапазона. цель игры: петя
должен отгадать загаданное число, используя как можно меньше попыток. за
каждую попытку петя может предложить одно любое число из диапазона, а вася
должен ответить: «больше», «меньше» или «равен» предложенный петей вариант
относительно загаданного числа. при равенстве значений игра заканчивается, и
игроки подсчитывают количество попыток. вспомнив известный алгоритм, петя стал
действовать следующим образом:
1. он предлагал число z наиболее близкое к середине отрезка[x; y],
2 в зависимости от ответа васи, петя заменял отрезок [x,y] на отрезок [x,z],
если ответ был «меньше» или [z,y] если ответ был «больше».
3. далее петя повторял действия 1 и 2, но для нового диапазона , до тех пор
пока не угадывал число.
требуется составить блок-схему алгоритма либо описать этот алгоритм на
языке, либо составить на одном из языков программирования программу,
моделирующую процесс игры и подсчитывающую количество попыток пети.
алгоритм или программу сопроводить описанием всех использованных
переменных, констант и т.п. – для каждой указать тип и для чего она предназначается.
1. Задаем начальный диапазон чисел [x; y].
2. Инициализируем счетчик попыток p с нулевым значением.
3. До тех пор, пока x не станет равным y:
1. Вычисляем середину отрезка z = (x + y) / 2.
2. Предлагаем число z Петей и увеличиваем счетчик попыток на 1.
3. Получаем ответ Васи (больше, меньше или равно).
4. Если ответ "равно", то игра заканчивается.
5. Если ответ "больше", то заменяем диапазон [x; y] на [z; y].
6. Если ответ "меньше", то заменяем диапазон [x; y] на [x; z].
4. Выводим количество попыток p на экран.
Теперь напишем программу на языке Python, которая будет моделировать процесс игры и подсчитывать количество попыток Пети.
```python
def guess_number(x, y):
p = 0 # Счетчик попыток
while x != y:
z = (x + y) // 2 # Вычисляем середину отрезка
print("Предположение Пети:", z)
p += 1 # Увеличиваем счетчик попыток на 1
answer = input("Ответ Васи (больше, меньше или равно): ")
if answer == "равно":
break
elif answer == "больше":
x = z
elif answer == "меньше":
y = z
print("Число угадано!")
print("Количество попыток:", p)
# Пример использования программы
x = int(input("Введите начало диапазона: "))
y = int(input("Введите конец диапазона: "))
guess_number(x, y)
```
В данной программе использована следующая переменная:
- p (int) - счетчик попыток, инициализируется нулевым значением и увеличивается на 1 при каждой попытке.
Также в программе используется ввод данных с клавиатуры (функция input) для ввода ответа Васи и начального и конечного значений диапазона x и y. Все остальные переменные (x, y, z, answer) являются вспомогательными и служат для хранения промежуточных значений и данных в процессе выполнения алгоритма.