Автор Дима Соколенко задал вопрос в разделе Python
Книга Майкла Доусона, "Программируем на Python" никак не могу решить последнюю задачу 3-й главы. и получил лучший ответ
Ответ от Капитан Гугл[гуру]
Оптимальная стратегия такая. У нас есть 100 чисел и вопросы, на которые можно отвечать только "да" и "нет" (если я ничего не путаю в условии). Каждый такой вопрос может отсеять только половину возможных значений. Значит, надо задавать вопросы так, чтобы каждый раз выбрасывать половину интервала, на котором есть число. Т. е. вопрос должен быть "это число больше середины интервала? ", а после ответа надо "сдвинуть" край интервала в середину. Например:
- Число в интервале от 1 до 100. Это число больше 50?
- Да.
- Число в интервале от 51 до 100. Это число больше 75?
- Нет.
- Число в интервале от 51 до 75...
И т. д., пока интервал не сократится до одного числа.
Капитан Гугл
(144966)
Во-первых, не соответствует условию (число вводится в начале, а не угадывается, вроде как компьютер сам с собой играет - но в условии игра с человеком).
Во-вторых, дольше.
В-третьих, не уверен, что проще.
Алгоритм по методу Хартли - деление пополам:
Сколько вопросов надо задать, чтобы найти задуманное число от 1 до 100. Допустим загаданное число 27. Вариант диалога:
Больше 50? Нет.
Больше 25? Да.
Больше 38? Нет.
Меньше 32? Да.
Меньше 29? Да.
Больше 27? Нет.
Это число 26? Нет.
На выходе проги можно вот такое замутить:
Задумайте любое целое число от '1' до '100'
Программа будет задавать вопросы, если соглашаетесь введите 'y', иначе 'n'.
1) Задуманное число меньше 50? Ваш ответ: n
2) Задуманное число меньше 77.5? Ваш ответ: n
3) Задуманное число меньше 91.75? Ваш ответ: y
4) Задуманное число меньше 84.875? Ваш ответ: n
5) Задуманное число меньше 88.4375? Ваш ответ: y
6) Задуманное число меньше 86.2188? Ваш ответ: n
7) Задуманное число меньше 87.1094? Ваш ответ: y
Вы задумали число 87
Только отступы сделайте сами.
# coding: utf-8
import random
print(' Загадайте число от 1 до 100')
print(
"Если загаданное число меньше - ставить "m",если больше - ставить "b"
Если число угадано - написать "yes"")
# Начальные границы
x = 1
y = 100
z = random.randint(x, y)
print("Это число", z, "?")
number_z = input("Ваш ответ ")
while number_z != "yes":
if number_z == "m":
y = z - 1
z = random.randint(x, y)
print("Это", z, "?")
elif number_z == "b":
x = z + 1
z = random.randint(x, y)
print("Это", z, "?")
number_z = input("Ваш ответ: ")
if number_z == "yes":
print("Ура! ")
Небольшая ошибка у Вас, перед строкой elif number_z =="b" надо написать строку number_z = input("Ваш ответ")
print("Угадай число от 1 до 100")
import random
pus = None
the_number = random.randint(1,100)
min = 1
max = 100
while pus !="=":
print(the_number)
pus=input()
if pus == ">":
if min == max:
print("ohuel?")
else:
min = the_number +1
the_number = random.randint(min,max)
elif pus == "<":
if min == max:
print("ohuel?")
else:
max = the_number -1
the_number = random.randint(min,max)
print("Сука")
Сколько 0 (нулей) в конце числа 100! (сто факториал)?
Вот результат:
100! = 93,326,215,443,944,152,681,699,238,856,266,700,490,715,968,264,
подробнее...
Подскажите нормальную функцию генерации случайных чисел на C++
srand(time(NULL));
int k = rand() % 101+ 50
Выдаст ПСЕВДОслучайное значение из
подробнее...
список чисел от 1 до 1000000. список чисел от 1 до 1000000
Список простых чисел от 1 до 100
подробнее...
народ подскажите сочинение по английскому на тему-технологии стали большей частью нашей жизни) плиииз! оч надо =(
1. Technology In Our Life
Some one would say that technology would be men down fall. Some
подробнее...
Возведение в степень. Java.
Например так:
import java.lang.*;
public class MathDemo {
public
подробнее...
Что такое число гугл?
Гугол (от англ. googol) — это число десять в сотой степени, то есть единица со ста нулями. О
подробнее...
Классы точности, квалитет
I средств измерений, обобщённая характеристика средств измерений, служащая показателем
подробнее...
Процессор Intel Pentium, старый, Что-за модель? На нём написано: (см. внутри) >>>
Pentium P54C CPU 100MHz Socket 5/7, 8+8KB L1 Cache
Вовка Гончаров
(15611)
подробнее...
Напишите пожалуйста или дайте ссылку на английские цифры, порядковые с русской транскрипцией
Цифры и числа на английском языке, транскрипция, произношение
подробнее...