Срезы массивов через индексы
Часть раздела Основы путешествия по 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Выбирайте этот метод, когда вам известно количество необходимых элементов, и используйте диапазоны, когда вы знаете точные позиции.
Задание
ЛегкоПрочитайте три входных значения:
- Одна строка целых чисел, разделенных запятыми (например,
5,10,15,20,25,30,35,40) - Начальный индекс (целое число)
- Количество элементов для извлечения (целое число)
Разделите первый ввод на массив целых чисел. Используйте начальный индекс и количество, чтобы сделать срез массива, используя синтаксис индекс-и-длина, затем выведите каждый элемент срезанной части на отдельной строке.
Например, если входные данные — 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: Напишите ниже ваш код, чтобы извлечь подмассив, используя синтаксис индекс-и-длина,
# и выведите каждый элемент на отдельной строкеВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 3Логические операторы. Часть 47Калькулятор разделения счета
Приветственное сообщениеПолучение пользовательского ввода13Продвинутая работа с массивами
Срезы массивов через диапазоныСрезы массивов через индексыОператоры массивовМетод include?2Переменные и типы данных
Числа и переменныеСтроковый тип данныхЛогический тип данныхТип данных SymbolПроверка типов данныхПравила именованияПовторение: создание переменных5Принятие решений
Оператор IfКонструкция If - ElseПовторение — Простой калькуляторВложенные конструкции If - ElseОператор Unless8Циклы
Цикл For с диапазонамиЦикл WhileОператор BreakОператор NextПовторение: ФакториалЦикл TimesЦикл UntilВложенные циклыПовторение: Динамический ввод3Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСокращенная арифметикаИтоги: простая математикаОператоры сравнения6Основы ввода-вывода
Вывод с помощью putsВывод с помощью print и pВывод с переменнымиВвод с помощью getsМетод chompПреобразование типовИтоги — Калькулятор возрастаИтоги — Истина или ложь