Menu
Coddy logo textTech

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

Часть раздела Основы путешествия по 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

Шпаргалка

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

numbers = [10, 20, 30, 40, 50]
slice = numbers[1..3]
# Возвращает [20, 30, 40] (индексы 1, 2 и 3)

Используйте две точки (..), чтобы включить конечный индекс:

letters = ["a", "b", "c", "d", "e"]
slice = letters[0..2]
# Возвращает ["a", "b", "c"] (индексы 0, 1 и 2)

Используйте три точки (...), чтобы исключить конечный индекс:

letters = ["a", "b", "c", "d", "e"]
slice = letters[0...3]
# Возвращает ["a", "b", "c"] (индексы 0, 1 и 2, останавливается перед 3)

Отрицательные индексы ведут отсчет с конца массива (-1 — это последний элемент):

colors = ["red", "green", "blue", "yellow"]
slice = colors[1..-1]
# Возвращает ["green", "blue", "yellow"] (от индекса 1 до последнего элемента)

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

# Прочитать значения, разделенные запятыми
input_values = gets.chomp

# Прочитать спецификацию диапазона
range_spec = gets.chomp

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

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

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