1 100 numbers



Автор Дима Соколенко задал вопрос в разделе 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("Ваш ответ")

Ответ от Виктория Строй Март[новичек]
1 100 numbers

Ответ от Ѐодион Ермолинский[новичек]
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("Сука")

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: Книга Майкла Доусона, "Программируем на Python" никак не могу решить последнюю задачу 3-й главы.

Сколько 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

Выдаст ПСЕВДОслучайное значение из
подробнее...

Возведение в степень. Java.
Например так:

import java.lang.*;

public class MathDemo {

public
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:
спросили в Другое
Что такое число гугл?
Гугол (от англ. googol) — это число десять в сотой степени, то есть единица со ста нулями. О
подробнее...
спросили в Другое
Классы точности, квалитет
I средств измерений, обобщённая характеристика средств измерений, служащая показателем
подробнее...
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*