Menu
Coddy logo textTech

Методы диапазонов

Часть раздела Логика и управление потоком путешествия по Ruby на Coddy — урок 7 из 56.

Диапазоны обладают удобными методами, которые избавляют вас от необходимости писать циклы вручную.

include? проверяет, попадает ли значение в диапазон:

range = 1..10
puts range.include?(5)   # true
puts range.include?(11)  # false

min, max и size работают напрямую с диапазонами:

puts (1..10).min   # 1
puts (1..10).max   # 10
puts (1..10).size  # 10

step итерирует по диапазону с фиксированным шагом, что полезно, когда вам нужны не все значения:

(0..10).step(2) do |n|
  puts n
end
# 0, 2, 4, 6, 8, 10

И each работает так же, как и в массивах:

(1..3).each { |n| puts n * n }
# 1
# 4
# 9
challenge icon

Задание

Легко

Вам дан инклюзивный диапазон и список догадок. Оцените догадки и суммируйте характеристики диапазона.

Прочитайте две строки:

  1. Два целых числа, разделенных пробелом: start и end_value
  2. Список целых чисел-догадок, разделенных запятыми

Используя диапазон start..end_value, выведите:

  1. Hit: <n>, где n — это количество догадок, попадающих в диапазон (используйте include?)
  2. Span: <n>, где n — это size диапазона
  3. Multiples of 3 sum: <n>, где n — это сумма всех чисел, кратных 3, в этом диапазоне (используйте step, начиная с первого кратного 3 числа, которое равно или больше start)

Для входных данных 1 10 в первой строке и 3,5,11,7,-2 во второй, вывод будет следующим:

Hit: 3
Span: 10
Multiples of 3 sum: 18

(Попадания (Hits): 3, 5, 7. Кратные 3 в диапазоне 1..10: 3+6+9 = 18.)

Шпаргалка

Полезные методы Range:

range = 1..10
range.include?(5)  # true
range.min          # 1
range.max          # 10
range.size         # 10

step выполняет итерацию, перепрыгивая через фиксированное значение:

(0..10).step(2) { |n| puts n }
# 0, 2, 4, 6, 8, 10

each работает так же, как и в массивах:

(1..3).each { |n| puts n * n }

Попробуйте сами

start, end_value = gets.chomp.split.map(&:to_i)
guesses = gets.chomp.split(",").map(&:to_i)

# TODO: Количество попаданий через include?, диапазон через size, сумма кратных 3 через step
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком