Menu
CoddyTech

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

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

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

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

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

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

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

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

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