Телеграм чат начинающих программистов. Общаемся и помогаем друг другу
Если ссылка не открывается, можно найти нас в поиске по чатам @rubyrush
или
пойти другим путем
Напишите программу, которая загадывает случайное число от 0 до 15 включительно и просит пользователя его угадать с трех попыток.
При каждом вводе пользователем числа программа отвечает «тепло» если введенное число отличается от загаданного на 2 или меньше, «холодно» если на 3 и больше. В каждом ответе программа также подсказывает больше или меньше введенное число, чем загаданное (выводит на экран "нужно больше" или "нужно меньше").
Если число угадано точно за 3 попытки – программа завершается и поздравляет пользователя с победой. Если нет – выводит какое число было загадано.
Загадано число от 0 до 16, отгадайте какое?
> 8
Тепло (нужно больше)
> 10
Тепло (нужно меньше)
> 9
Ура, вы выиграли!
В качестве развлечения найдите алгоритм гарантированно угадать число за 3 попытки.
Чтобы работать с введенными данными как с числами,
находить разницу, больше/меньше/равно и пр., нужно перевести их в целые числа методом to_i
(как всегда, метод вызывается через точку: "2".to_i
— это целое число 2).
Когда разобрались с вводом чисел — осталось три раза запросить число у пользователя и проверить его конструкцией if
(тоже три раза). Конструкция if
будет хитрой — со вложенными if
-ами: сперва надо проверить точное совпадение, если его нет – проверить в какую сторону "не попал" пользователь (больше-меньше) и в зависимости от "расстояния" до числа вывести подсказку. Но все три раза эта конструкция будет совершенно одинаковая.
Чтобы измерить разницу между числами, нужно вычесть одно из другого и найти абсолютное значение этой разницы. Так например 2 – 5 будет равно -3, но для нашей программы нужно знать модуль этого числа, который равен 3).
Чтобы найти это абсолютное значение числа — используйте встроенный в Руби метод abs
Если пользователь угадал число — можно выйти методом exit
.
Обратите внимание ну группировку арифметических выражений круглыми скобками. Перед вызовом метода to_s
два числа, между которыми выполняется какая-то операция, нужно сгруппировать.
Точно так же в этом задании нужно вызывать метод abs
у «скобок», в которых вы делаете операцию.
2 - 5.abs # неправильно
(2 - 5).abs # правильно