Menu
CoddyTech

Mảng răng cưa

Thuộc phần Logic và luồng chương trình trong hành trình GDScript của Coddy. Bài học 16 trên 78.

Các hàng của mảng 2D không cần có cùng độ dài. Mảng 2D có các hàng với độ dài khác nhau là một mảng răng cưa. Ở đây, mỗi hàng chứa điểm số của một người chơi, và mỗi người chơi đã chơi số vòng khác nhau:

var scores := [
	[90, 85, 70],
	[60],
	[75, 80]
]
print(scores[0].size()) # 3
print(scores[1].size()) # 1

Trong một mảng răng cưa, scores[0].size() không phải là độ dài của mọi hàng. Lặp qua các cột của hàng hiện tại bằng scores[r].size():

for r in range(scores.size()):
	var total := 0
	for c in range(scores[r].size()):
		total += scores[r][c]
	print("Player ", r + 1, ": ", total)
Player 1: 245
Player 2: 60
Player 3: 155

Vòng lặp luôn dùng độ dài của hàng đầu tiên sẽ đọc quá phần tử cuối của những hàng ngắn hơn: scores[1][2] gây lỗi vì hàng 1 chỉ có chỉ số 0. for value in row luôn phù hợp với hàng mà nó duyệt qua.

Bạn tạo mảng không đều như một lưới, trong đó mỗi hàng có độ dài khác nhau. Trong tam giác này, hàng r có r + 1 ô:

var triangle := []
for r in range(4):
	var row := []
	for c in range(r + 1):
		row.append("*")
	triangle.append(row)
for row in triangle:
	print("".join(row))
*
**
***
****

Một hàng thậm chí có thể để trống: [[1, 2], [], [3]] là một mảng răng cưa hợp lệ gồm ba hàng.

challenge icon

Thử thách

Dễ

Viết một hàm có tên make_triangle với một tham số int là n. Hàm trả về một mảng răng cưa gồm n hàng:

  • Hàng 1 có 1 ô, hàng 2 có 2 ô, và cứ tiếp tục như vậy cho đến hàng n, có n ô.
  • Đếm hàng và cột bắt đầu từ 1, mỗi ô chứa tích của số hàng và số cột. Ô ở hàng 3, cột 2 chứa 3 * 2 = 6.

Ví dụ, make_triangle(3) trả về:

[[1], [2, 4], [3, 6, 9]]

Các bài kiểm tra tự gọi make_triangle() và kiểm tra mảng được trả về. Đừng gọi hàm này và đừng in ra bất cứ thứ gì.

Tự làm thử

func make_triangle(n: int):
	# Viết code ở đây
	pass
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 chương trình

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