Menu
Coddy logo textTech

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

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

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

Синтаксис использует запятую для разделения начального индекса и количества элементов:

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

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

Это извлекает 3 элемента, начиная с индекса 1. Первое число — это начальная позиция, а второе — количество элементов, которое вы хотите получить.

Этот подход особенно полезен, когда вы точно знаете, сколько элементов вам нужно:

letters = ["a", "b", "c", "d", "e"]
first_two = letters[0, 2]

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

Отрицательные индексы здесь тоже работают. Вы можете начать с конца массива:

colors = ["red", "green", "blue", "yellow"]
last_two = colors[-2, 2]

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

Если вы запрашиваете больше элементов, чем доступно, Ruby просто возвращает то, что есть, не вызывая ошибки:

nums = [1, 2, 3]
slice = nums[1, 10]

puts slice  # Вывод: 2, 3

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

challenge icon

Задание

Легко

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

  1. Одна строка целых чисел, разделенных запятыми (например, 5,10,15,20,25,30,35,40)
  2. Начальный индекс (целое число)
  3. Количество элементов для извлечения (целое число)

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

Например, если входные данные — 5,10,15,20,25,30,35,40, 2 и 4, результат должен быть следующим:

15
20
25
30

Если входные данные — 100,200,300,400,500, 0 и 2, результат должен быть следующим:

100
200

Если входные данные — a,b,c,d,e,f,g, -3 и 2, результат должен быть следующим:

e
f

Если входные данные — 10,20,30, 1 и 10, результат должен быть следующим:

20
30

Шпаргалка

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

array[start_index, length]

Базовый пример:

numbers = [10, 20, 30, 40, 50]
slice = numbers[1, 3]
puts slice  # Выводит: 20, 30, 40

Первое число — это начальная позиция, а второе — количество извлекаемых элементов.

Отрицательные индексы также работают с этим синтаксисом, позволяя начать отсчет с конца массива:

colors = ["red", "green", "blue", "yellow"]
last_two = colors[-2, 2]
puts last_two  # Выводит: blue, yellow

Если вы запросите больше элементов, чем доступно, Ruby вернет то, что есть, не вызывая ошибки:

nums = [1, 2, 3]
slice = nums[1, 10]
puts slice  # Выводит: 2, 3

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

# Чтение входных данных
input_line = gets.chomp
start_index = gets.chomp.to_i
count = gets.chomp.to_i

# Разделение входной строки в массив
arr = input_line.split(',')

# TODO: Напишите ниже ваш код, чтобы извлечь подмассив, используя синтаксис индекс-и-длина,
# и выведите каждый элемент на отдельной строке
quiz iconПроверьте себя

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

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