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()) # 1Trong 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: 155Vò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.
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
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
1Chuyên sâu về chuỗi
Các phương thức của chuỗiTìm kiếm trong chuỗiThay thế và xóa khoảng trắngTách và nốiÔn tập: Kiểm tra tên người dùng7Kiểu liệt kê
Kiểu liệt kê là gì?Định nghĩa kiểu liệt kêCác giá trị của kiểu liệt kêKiểu liệt kê trong matchÔn tập: đèn giao thông10Hàm nâng cao
Trả về nhiều giá trịHàm lambda phần 1Hàm lambda phần 2Ôn tập: sắp xếp bằng lambdaHàm đệ quy phần 1Hàm đệ quy phần 2Ôn tập: tính tổng mảng lồng nhau13Hệ thống quản lý hàng tồn kho
Tổng quan dự ánThêm mặt hàng2Ra quyết định nâng cao
So khớp với biếnĐiều kiện bảo vệ trong so khớpMẫu mảngMẫu từ điểnKiểm tra thành viênÔn tập: Bộ phân tích lệnh5Ứng dụng sổ liên lạc
Hiển thị menuThêm liên hệ8Trình quản lý hồ sơ học sinh
Tổng quan dự ánThêm học sinh3Mảng nhiều chiều
Cơ bản về mảng 2 chiềuTruy cập phần tử trong mảng 2 chiềuVòng lặp lồng nhau với mảng 2 chiềuÔn tập: mảng 2 chiềuMảng răng cưaCác mẫu phổ biến với mảng 2 chiềuÔn tập: bàn cờ6Tập hợp với từ điển
Tập hợp là gì?Từ điển như một tập hợpThêm và xóaHợp và giaoHiệu tập hợpÔn tập: Xóa phần tử trùng lặp9Tổng hợp dữ liệu nâng cao
Tính tổng các giá trịTìm giá trị nhỏ nhất và lớn nhấtSắp xếp tùy chỉnhÔn tập: Sắp xếp từ điểnTự luyện tập: Trình biên dịch GDScript online