Menu
CoddyTech

Hiệu tập hợp

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 35 trên 78.

Phép hiệu của hai tập hợp chứa các phần tử có trong tập hợp thứ nhất nhưng không có trong tập hợp thứ hai. Lặp qua tập hợp thứ nhất và giữ lại những phần tử không có trong tập hợp thứ hai:

var needed := {"rope": true, "torch": true, "map": true}
var packed := {"torch": true, "apple": true}
var missing := {}
for item in needed:
	if not packed.has(item):
		missing[item] = true
print(missing.keys()) # ["rope", "map"]

Thứ tự của các tập hợp rất quan trọng. Hiệu của packed và needed là ["apple"]: những gì bạn đã đóng gói nhưng không cần.

Hai phần khác biệt kết hợp lại tạo thành hiệu đối xứng: các phần tử chỉ có trong đúng một tập hợp. Ở đây, đó là rope, map và apple.

Để kiểm tra xem có thiếu gì không, has_all() nhận một mảng và trả về true khi mọi phần tử trong mảng đều là khóa của từ điển:

print(packed.has_all(needed.keys())) # false: thiếu rope và map
challenge icon

Thử thách

Dễ

Trước chuyến đi, bạn so sánh những món đồ cần mang với những món đã đóng gói. Chương trình đọc hai dòng, gồm các món đồ cần mang và các món đã đóng gói, phân cách bằng dấu cách, rồi đoạn code khởi đầu tạo các tập hợp needed và packed.

In ra hai dòng, với các phần tử được nối bằng , :

  • Missing: theo sau là những món đồ cần mang nhưng chưa được đóng gói
  • Extra: theo sau là những món đồ đã đóng gói nhưng không cần mang

Giữ nguyên thứ tự của tập hợp mà bạn lặp qua. In ra none thay cho danh sách rỗng. Với đầu vào:

rope torch map
torch apple

đầu ra là:

Missing: rope, map
Extra: apple

Tự làm thử

extends Node

func _ready():
	var needed := {}
	for item in OS.read_string_from_stdin().split(" ", false):
		needed[item] = true
	var packed := {}
	for item in OS.read_string_from_stdin().split(" ", false):
		packed[item] = true

	# Tạo hai tập hợp phần tử khác nhau

	# In ra kết quả
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