Срезы массивов через диапазоны
Часть раздела Основы путешествия по Ruby на Coddy. Урок 69 из 88.
Иногда нужно извлечь часть массива, а не обращаться к отдельным элементам. Ruby позволяет извлекать срезы массивов с помощью диапазонов, создавая новый массив, содержащий только указанные вами элементы.
Чтобы получить срез массива с диапазоном, поместите диапазон в квадратные скобки:
numbers = [10, 20, 30, 40, 50]
slice = numbers[1..3]
puts slice # Выводит: 20, 30, 40Диапазон 1..3 включает элементы с индексами 1, 2 и 3. Помни, что индексы массива начинаются с 0, поэтому индекс 1 соответствует второму элементу.
Также можно использовать диапазон с тремя точками (...), чтобы исключить последний индекс:
letters = ["a", "b", "c", "d", "e"]
slice = letters[0...3]
puts slice # Выводит: a, b, cЗдесь 0...3 включает индексы 0, 1 и 2, но останавливается перед индексом 3.
Отрицательные индексы работают и с диапазонами. Они отсчитываются от конца массива, где -1 — последний элемент:
colors = ["red", "green", "blue", "yellow"]
slice = colors[1..-1]
puts slice # Выводит: green, blue, yellowЭто извлекает все элементы с индекса 1 до последнего, что полезно, если нужно пропустить первый элемент, не зная длины массива.
Задание
ЛегкоПрочитайте два входных значения:
- Одна строка с целыми числами, разделёнными запятыми (например,
10,20,30,40,50,60,70) - Задание диапазона в формате
start..endилиstart...end(например,2..5или1...4)
Разделите первое входное значение на массив целых чисел. Затем используйте диапазон из второго входного значения, чтобы извлечь часть массива и вывести каждый элемент этой части на отдельной строке.
Для диапазона во входных данных будут использоваться либо две точки (..), чтобы включить конечный индекс, либо три точки (...), чтобы исключить его.
Например, если входные значения — 10,20,30,40,50,60,70 и 2..5, вывод должен быть таким:
30
40
50
60Если входные значения — 5,10,15,20,25,30 и 0...3, вывод должен быть таким:
5
10
15Если входные значения — 100,200,300,400,500 и 1..-1, вывод должен быть таким:
200
300
400
500Если входные значения — a,b,c,d,e,f и -3..-1, вывод должен быть таким:
d
e
fПопробуйте сами
# Считайте значения, разделённые запятыми
input_values = gets.chomp
# Считайте описание диапазона
range_spec = gets.chomp
# TODO: Напишите свой код ниже
# 1. Разбейте input_values на массив
# 2. Разберите range_spec, чтобы определить начало, конец и какой оператор использовать: .. или ...
# 3. Получите срез массива с помощью подходящего диапазона
# 4. Выведите каждый элемент среза на отдельной строкеВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
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