Kiến thức cơ bản về 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 10 trên 56.
Mảng 2D là mảng có các phần tử cũng là những mảng. Mỗi mảng bên trong biểu thị một hàng trong lưới.
cinema = [
[true, true], # Hàng 0
[false, true] # Hàng 1
]Đây là một lưới 2×2 gồm hai hàng, mỗi hàng có hai cột.
Để tạo một lưới 3×4 gồm các số nguyên:
matrix = [
[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]
]Bạn có thể tạo một lưới chứa giá trị mặc định bằng cách dùng Array.new hai lần, một lần cho các hàng và một lần cho các cột:
grid = Array.new(3) { Array.new(4, 0) }
# 3 hàng, 4 cột, tất cả đều là số 0Dạng khối ({ Array.new(4, 0) }) rất quan trọng, vì nó tạo một mảng bên trong mới cho mỗi hàng. Nếu không dùng dạng này, mọi hàng sẽ cùng trỏ đến một mảng.
Thử thách
DễĐọc hai số nguyên (hai dòng đầu vào): rows và cols. Tạo một mảng 2 chiều có kích thước đó, trong đó mỗi ô bằng row * cols + col + 1 (vì vậy hàng đầu tiên bắt đầu từ 1 và mảng được điền theo thứ tự đọc).
In mảng bằng cách dùng inspect trên mảng ngoài cùng, trên một dòng.
Với đầu vào 2 rồi đến 3, đầu ra là:
[[1, 2, 3], [4, 5, 6]]Tự làm thử
rows = gets.to_i
cols = gets.to_i
# TODO: tạo lưới và in ra bằng inspect
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