Truy cập phần tử trong mảng 2 chiều
Thuộc phần Logic và luồng xử lý trong hành trình Ruby của Coddy. Bài học 11 trên 56.
Để đọc hoặc cập nhật một ô trong mảng 2D, hãy dùng liên tiếp hai lần tra cứu chỉ số: lần đầu chọn hàng, lần thứ hai chọn cột.
matrix = [
[10, 20, 30],
[40, 50, 60],
[70, 80, 90]
]
puts matrix[0][0] # 10 (trên cùng bên trái)
puts matrix[1][2] # 60 (hàng 1, cột 2)
puts matrix[2][0] # 70 (dưới cùng bên trái)Cập nhật một ô dùng cùng cú pháp ở phía bên trái:
matrix[0][1] = 99
puts matrix[0].inspect # [10, 99, 30]Hai truy vấn hữu ích để xem kích thước:
puts matrix.length # 3 (số hàng)
puts matrix[0].length # 3 (số cột trong hàng 0)Chỉ số bắt đầu từ 0 và tăng đến length - 1. Truy cập vượt quá phần tử cuối sẽ trả về nil thay vì gây ra lỗi.
Thử thách
Người mớiĐã cho mảng 2D matrix. Đọc ba số nguyên (ba dòng): r1, c1, rồi đến v. Sau đó:
- In ra giá trị tại
matrix[r1][c1] - Gán
matrix[r1][c1] = v - In ra toàn bộ
matrixđã cập nhật bằnginspect
Với đầu vào 1 / 2 / 99, đầu ra là:
60
[[10, 20, 30], [40, 50, 99], [70, 80, 90]]Tự làm thử
matrix = [
[10, 20, 30],
[40, 50, 60],
[70, 80, 90]
]
r1 = gets.to_i
c1 = gets.to_i
v = gets.to_i
# TODO: in ra matrix[r1][c1], gán v, rồi in ra toàn bộ matrix
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng xử lý
1Tìm hiểu sâu về chuỗi
Tổng quan về phương thức chuỗiNội suy chuỗiDuyệt qua chuỗiTách và nối chuỗiÔn tập: Đan chuỗi4Khối lệnh, Proc và lambda
Khối lệnh là gì?do..end và dấu ngoặc nhọnTừ khóa yieldTham số của khối lệnhProc và lambdaÔn tập: bộ lặp tùy chỉnh7Hash, phần 2
Hash.new với giá trị mặc địnhLặp qua HashHash lồng nhauGộp và chuyển đổiÔn tập: Bộ đếm tần suất10Dự án: Hồ sơ học sinh
Tổng quan dự ánThêm học sinh2Phạm vi
Phạm vi là gì?Các phương thức của phạm viPhạm vi trong case / whenÔn tập: luyện tập với phạm vi5Sức mạnh của Enumerable
select và rejectNối chuỗi mapreduce / injectcount, all?, any?, none?group_by và partitionsort_by, min_by, max_byÔn tập: quy trình dữ liệu3Mảng 2 chiều
Kiến thức cơ bản về mảng 2 chiềuTruy cập phần tử trong mảng 2 chiềuDuyệt qua mảng 2 chiềuCác mẫu phổ biến với mảng 2 chiềuÔn tập: thao tác với ma trận6Dự án: Trình quản lý thư viện
Tổng quan dự ánThêm sáchTự luyện tập: Trình biên dịch Ruby online