Menu
CoddyTech

Срезы массивов через диапазоны

Часть раздела Основы путешествия по Ruby на Coddy. Урок 69 из 88.

Иногда нужно извлечь часть массива, а не обращаться к отдельным элементам. Ruby позволяет извлекать срезы массивов с помощью диапазонов, создавая новый массив, содержащий только указанные вами элементы.

Чтобы получить срез массива с диапазоном, поместите диапазон в квадратные скобки:

numbers = [10, 20, 30, 40, 50]
slice = numbers[1..3]

puts slice  # Выводит: 20, 30, 40

Диапазон 1..3 включает элементы с индексами 1, 2 и 3. Помни, что индексы массива начинаются с 0, поэтому индекс 1 соответствует второму элементу.

Также можно использовать диапазон с тремя точками (...), чтобы исключить последний индекс:

letters = ["a", "b", "c", "d", "e"]
slice = letters[0...3]

puts slice  # Выводит: a, b, c

Здесь 0...3 включает индексы 0, 1 и 2, но останавливается перед индексом 3.

Отрицательные индексы работают и с диапазонами. Они отсчитываются от конца массива, где -1 — последний элемент:

colors = ["red", "green", "blue", "yellow"]
slice = colors[1..-1]

puts slice  # Выводит: green, blue, yellow

Это извлекает все элементы с индекса 1 до последнего, что полезно, если нужно пропустить первый элемент, не зная длины массива.

challenge icon

Задание

Легко

Прочитайте два входных значения:

  1. Одна строка с целыми числами, разделёнными запятыми (например, 10,20,30,40,50,60,70)
  2. Задание диапазона в формате start..end или start...end (например, 2..5 или 1...4)

Разделите первое входное значение на массив целых чисел. Затем используйте диапазон из второго входного значения, чтобы извлечь часть массива и вывести каждый элемент этой части на отдельной строке.

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

Например, если входные значения — 10,20,30,40,50,60,70 и 2..5, вывод должен быть таким:

30
40
50
60

Если входные значения — 5,10,15,20,25,30 и 0...3, вывод должен быть таким:

5
10
15

Если входные значения — 100,200,300,400,500 и 1..-1, вывод должен быть таким:

200
300
400
500

Если входные значения — a,b,c,d,e,f и -3..-1, вывод должен быть таким:

d
e
f

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

# Считайте значения, разделённые запятыми
input_values = gets.chomp

# Считайте описание диапазона
range_spec = gets.chomp

# TODO: Напишите свой код ниже
# 1. Разбейте input_values на массив
# 2. Разберите range_spec, чтобы определить начало, конец и какой оператор использовать: .. или ...
# 3. Получите срез массива с помощью подходящего диапазона
# 4. Выведите каждый элемент среза на отдельной строке
quiz iconПроверьте себя

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

Все уроки раздела Основы

Потренируйтесь самостоятельно: Онлайн-компилятор Ruby