Наш чатик

Телеграм чат начинающих программистов. Общаемся и помогаем друг другу

Если ссылка не открывается, можно найти нас в поиске по чатам @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 # правильно