Menu
CoddyTech

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ố 0

Dạ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.

challenge icon

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
quiz iconTự kiểm tra

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ý

Tự luyện tập: Trình biên dịch Ruby online