Срезы массивов через индексы
Часть раздела Основы путешествия по 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Попробуйте сами
# Считайте входные данные
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Преобразование типовИтоги — Калькулятор возрастаИтоги — Истина или ложьПотренируйтесь самостоятельно: Онлайн-компилятор Ruby