Недавно у нас была задачка про то, как угадать любое число от 1 до 100 за 7 попыток. Кратко логика такая:
- Оппонент загадывает целое число от 1 до 100.
- Мы называем своё целое число в этом диапазоне.
- Оппонент говорит, наше число больше или меньше, чем то, которое он загадал.
- Удивительно то, что за 7 попыток можно гарантированно угадать любое число от 1 до 100.
Секрет решения в том, что с каждой попыткой мы делим диапазон поиска числа вдвое. Например, наша первая догадка будет 50, и после неё мы узнаем, в каком отрезке искомое число: от 1 до 50 или от 51 до 100. Например, оно больше 50. Мы берём диапазон чисел от 51 до 100 и делим его пополам — получается 75. Это следующее предположение.
И так мы «складываем вдвое» область поиска, пока не останется одно число. А математические законы таковы, что если 100 поделить на 2 семь раз подряд, получится плюс-минус единица.
Теперь сделаем следующий шаг — автоматизируем эту игру в виде простого веб-приложения. Пусть потеет машина.
КАК НАУЧИТЬСЯ ОТЖИМАТЬСЯ С 0 ДО 100 МЕТОДА ВДВ
Логика угадывателя
Наш угадывательный скрипт будет работать ровно так же, как в исходной игре: на каждом шаге делим диапазон угадывания пополам, округляем до целого и называем это значение. Если больше или меньше — делаем то же самое с новым диапазоном, а если угадали — выводим сообщение.
Сделаем проект в виде HTML-страницы: так нам будет удобнее выводить сообщения, а пользователю — нажимать на кнопки.
Готовим страницу
За основу возьмём страницу со стилями из проекта про калькулятор и выкинем из неё всё лишнее. Заодно сразу наполним её двумя элементами:
- Приветственной надписью, которая скажет, что нужно сделать.
- Кнопкой, по нажатию на которую запустится игровой скрипт.
Как угадать число от 0 до 100 /*задаём общие параметры для всей страницы: шрифт и отступы*/ body < text-align: center; margin: 10; font-family: Verdana, Arial, sans-serif; font-size: 16px; >/* внешний вид кнопок */ button
// обрабатываем нажатие на стартовую кнопку function start()

Задача — Угадать случайное число — программирование на разных языках

Задача — Угадать случайное число
— программирование на Pascal, Си, Кумир, Basic-256, Python
В программе генерируется случайное целое число от 0 до 100. Пользователь должен его отгадать не более чем за 10 попыток. После каждой неудачной попытки должно сообщаться больше или меньше введенное пользователем число, чем то, что загадано. Если за 10 попыток число не отгадано, то вывести загаданное число.
- Сгенерировать случайное число.
- Ввести счетчик попыток. Присвоить ему значение 1.
- Пока счетчик попыток меньше, либо равен 10
- запрашивать у пользователя очередное число,
- если оно больше загаданного, то выводить «много»,
- если оно меньше загаданного, то выводить «мало»,
- иначе сообщать, что число угадано и прерывать выполнение цикла,
- увеличивать счетчик попыток на единицу.
Самый верный способ отгадать число менее чем за 10 попыток — это делить диапазон на 2. Например, если число лежит в пределах от 0 до 100, то введя 50 мы сразу сокращаем диапазон поиска в два раза. Если было сказано, что загаданное число меньше 50-ти, то вводим 25 и таким образом снова сокращаем диапазон в 2 раза.
Сможете ли сложить числа от 1 до 100 за одну минуту?
Если следовать этому правилу то потребуется 6-7 попыток, т.к. число 100 (изначальная длина диапазона) лежит в пределах между 26 и 27.
Pascal
var n,u,i: byte;
begin
randomize;
n := random(100);
i := 1;
writeln(‘Отгадайте число за 10 попыток’);
while i write(i,’-я попытка: ‘);
readln(u);
if u > n then
writeln(‘Много’)
else
if u < n then
writeln(‘Мало’)
else begin
writeln(‘Угадано!’);
break;
end;
i := i + 1;
end;
if i = 11 then
writeln(‘Вы не угадали. Было загадано ‘,n);
end. Отгадайте число за 10 попыток
1-я попытка: 47
Мало
2-я попытка: 85
Много
3-я попытка: 59
Мало
4-я попытка: 70
Мало
5-я попытка: 78
Много
6-я попытка: 74
Угадано!
Отгадайте число за 10 попыток
1-я попытка: 90
Много
2-я попытка: 80
Много
3-я попытка: 70
Много
4-я попытка: 60
Много
5-я попытка: 50
Мало
6-я попытка: 59
Много
7-я попытка: 58
Много
8-я попытка: 59
Много
9-я попытка: 57
Много
10-я попытка: 56
Много
Вы не угадали. Было загадано 55
Язык Си
main() srand(time(NULL));
int n,u,i;
n = rand() % 100;
i = 1;
while (i <=10) printf(«%d-я попытка: «, i);
scanf(«%d»,
if (u < n) printf(«Малоn»);
else
if (u > n) printf(«Многоn»);
else printf(«Угадано!n»);
break;
>
i += 1;
>
if (i == 11)
printf(«Не угадали. Это число %dn», n);
>
Python
from random import random
n = round(random() * 100)
i = 1
print(«Компьютер загадал число. Отгадайте его. У вас 10 попыток»)
while i u = int(input(str(i) + ‘-я попытка: ‘))
if u > n:
print(‘Много’)
elif u < n:
print(‘Мало’)
else:
print(‘Вы угадали с %d-й попытки’ % i)
break
i += 1
else:
print(‘Вы исчерпали 10 попыток. Было загадано’, n)
В Питоне есть расширение else для цикла while , которое выполняется единожды, когда логическое выражение в заголовке while возвращает ложь.
КуМир
алг угадай число
нач
цел n,u,i
n := int(rand(0,100))
i := 1
вывод «Отгадай число не более чем за 10 попыток», нс
нц пока i вывод i,»-я попытка: »
ввод u
если u>n то вывод «Много», нс
иначе
если u иначе
вывод «Угадано!»
выход
все
все
i := i+1
кц
если i = 11 то
вывод «Вы не угадали число «, n
все
кон
Basic-256
n = int(rand * 100)
i = 1
print «Угадайте число от 1 до 100»
while i print i + «-я попытка: «;
input u
if u < n then
print «Мало»
else
if u > n then
print «Много»
else
print «Угадано!»
end
endif
endif
i = i + 1
endwhile
if i = 11 then print «Не угадано число » + n
Источник: ars-games.ru
Угадать случайное число
В программе генерируется случайное целое число от 0 до 100. Пользователь должен его отгадать не более чем за 10 попыток. После каждой неудачной попытки должно сообщаться больше или меньше введенное пользователем число, чем то, что загадано. Если за 10 попыток число не отгадано, то вывести загаданное число.
- Сгенерировать случайное число.
- Ввести счетчик попыток. Присвоить ему значение 1.
- Пока счетчик попыток меньше, либо равен 10
- запрашивать у пользователя очередное число,
- если оно больше загаданного, то выводить «много»,
- если оно меньше загаданного, то выводить «мало»,
- иначе сообщать, что число угадано и прерывать выполнение цикла,
- увеличивать счетчик попыток на единицу.
Самый верный способ отгадать число менее чем за 10 попыток — это делить диапазон на 2. Например, если число лежит в пределах от 0 до 100, то введя 50 мы сразу сокращаем диапазон поиска в два раза. Если было сказано, что загаданное число меньше 50-ти, то вводим 25 и таким образом снова сокращаем диапазон в 2 раза.
Если следовать этому правилу то потребуется 6-7 попыток, т.к. число 100 (изначальная длина диапазона) лежит в пределах между 2 6 и 2 7 .
Pascal
угадать число от 1 до 100 паскаль
var n,u,i: byte;
begin
randomize;
n := random(100);
i := 1;
writeln(‘Отгадайте число за 10 попыток’);
while i write(i,’-я попытка: ‘);
readln(u);
if u > n then
writeln(‘Много’)
else
if u < n then
writeln(‘Мало’)
else begin
writeln(‘Угадано!’);
break;
end;
i := i + 1;
end;
if i = 11 then
writeln(‘Вы не угадали. Было загадано ‘,n);
end.
Отгадайте число за 10 попыток
1-я попытка: 47
Мало
2-я попытка: 85
Много
3-я попытка: 59
Мало
4-я попытка: 70
Мало
5-я попытка: 78
Много
6-я попытка: 74
Угадано!
Отгадайте число за 10 попыток
1-я попытка: 90
Много
2-я попытка: 80
Много
3-я попытка: 70
Много
4-я попытка: 60
Много
5-я попытка: 50
Мало
6-я попытка: 59
Много
7-я попытка: 58
Много
8-я попытка: 59
Много
9-я попытка: 57
Много
10-я попытка: 56
Много
Вы не угадали. Было загадано 55
Язык Си
#include
main() srand(time(NULL));
int n,u,i;
n = rand() % 100;
i = 1;
while (i <=10) printf(«%d-я попытка: «, i);
scanf(«%d»,
if (u < n) printf(«Малоn»);
else
if (u > n) printf(«Многоn»);
else printf(«Угадано!n»);
break;
>
i += 1;
>
if (i == 11)
printf(«Не угадали. Это число %dn», n);
>
Python
угадать число от 1 до 100 python (питон)
from random import random
n = round(random() * 100)
i = 1
print(«Компьютер загадал число. Отгадайте его. У вас 10 попыток»)
while i u = int(input(str(i) + ‘-я попытка: ‘))
if u > n:
print(‘Много’)
elif u < n:
print(‘Мало’)
else:
print(‘Вы угадали с %d-й попытки’ % i)
break
i += 1
else:
print(‘Вы исчерпали 10 попыток. Было загадано’, n)
В Питоне есть расширение else для цикла while, которое выполняется единожды, когда логическое выражение в заголовке while возвращает ложь.
КуМир
алг угадай число
нач
цел n,u,i
n := int(rand(0,100))
i := 1
вывод «Отгадай число не более чем за 10 попыток», нс
нц пока i вывод i,»-я попытка: »
ввод u
если u>n то вывод «Много», нс
иначе
если u < n то вывод «Мало», нс
иначе
вывод «Угадано!»
выход
все
все
i := i+1
кц
если i = 11 то
вывод «Вы не угадали число «, n
все
кон
Basic-256
n = int(rand * 100)
i = 1
print «Угадайте число от 1 до 100»
while i print i + «-я попытка: «;
input u
if u < n then
print «Мало»
else
if u > n then
print «Много»
else
print «Угадано!»
end
endif
endif
i = i + 1
endwhile
if i = 11 then print «Не угадано число » + n
Источник: gospodaretsva.com