Доступ к элементам двумерного массива
Часть раздела Логика и управление потоком путешествия по Ruby на Coddy. Урок 11 из 56.
Чтобы прочитать или обновить отдельную ячейку (cell) в двумерном массиве, объедините два обращения по индексу: первое выбирает row, второе — column.
matrix = [
[10, 20, 30],
[40, 50, 60],
[70, 80, 90]
]
puts matrix[0][0] # 10 (верхний левый)
puts matrix[1][2] # 60 (строка 1, столбец 2)
puts matrix[2][0] # 70 (нижний левый)Обновление cell использует тот же синтаксис на стороне left:
matrix[0][1] = 99
puts matrix[0].inspect # [10, 99, 30]Два полезных запроса формы:
puts matrix.length # 3 (количество строк)
puts matrix[0].length # 3 (столбцы в строке 0)Индексы начинаются с 0 и доходят до length - 1. Выход за конец возвращает nil, а не вызывает ошибку.
Задание
НовичокДан двумерный массив matrix. Считайте три целых числа (три строки): r1, c1, затем v. Затем:
- Выведите значение в
matrix[r1][c1] - Установите
matrix[r1][c1] = v - Выведите весь обновлённый
matrixс помощьюinspect
Для ввода 1 / 2 / 99 вывод будет таким:
60
[[10, 20, 30], [40, 50, 99], [70, 80, 90]]Попробуйте сами
matrix = [
[10, 20, 30],
[40, 50, 60],
[70, 80, 90]
]
r1 = gets.to_i
c1 = gets.to_i
v = gets.to_i
# TODO: вывести matrix[r1][c1], присвоить v, затем вывести всю матрицу
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Строки: подробный разбор
Обзор методов строкИнтерполяция строкПеребор строкРазделение и объединениеПовторение — String Weaver4Блоки, Proc и Lambda
Что такое блок?do..end и фигурные скобкиКлючевое слово yieldПараметры блокаProc и LambdaПовторение — пользовательский итератор7Хэши, часть 2
Hash.new со значениями по умолчаниюПеребор хэшейВложенные хэшиОбъединение и преобразованиеПовторение — счётчик частот10Проект — Учёт студентов
Обзор проектаДобавление студента2Диапазоны
Что такое диапазон?Методы диапазоновДиапазоны в Case / WhenПовторение — практика с диапазонами5Мощь Enumerable
Select и RejectЦепочка вызовов mapReduce / Injectcount, all?, any?, none?group_by и partitionsort_by, min_by, max_byПовторение — конвейер данных3Двумерные массивы
Основы двумерных массивовДоступ к элементам двумерного массиваПеребор двумерных массивовРаспространённые шаблоны для двумерных массивовПовторение — операции с матрицами6Проект — Менеджер библиотеки
Обзор проектаДобавление книгиПотренируйтесь самостоятельно: Онлайн-компилятор Ruby