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

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

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

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

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

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

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

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