집합의 차집합
Coddy GDScript 여정의 논리와 흐름 섹션에 포함된 레슨. 78개 중 35번째.
두 집합의 차집합에는 첫 번째 집합에는 있지만 두 번째 집합에는 없는 원소가 들어 있습니다. 첫 번째 집합을 순회하면서 두 번째 집합에 없는 원소를 남기세요:
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"]집합의 순서가 중요합니다. packed와 needed의 차집합은 ["apple"]입니다. 즉, 챙겼지만 필요하지 않았던 것입니다.
두 차이를 합치면 대칭 차집합이 됩니다. 즉, 두 집합 중 정확히 하나에만 포함된 원소들입니다. 여기서는 rope, map, apple입니다.
누락된 항목이 없는지 확인하기 위해 has_all()은 배열을 받아 배열의 모든 요소가 딕셔너리의 키일 때 true를 반환합니다:
print(packed.has_all(needed.keys())) # false: rope와 map이 없습니다챌린지
쉬움여행을 떠나기 전에 필요한 물건과 챙긴 물건을 비교합니다. 프로그램은 공백으로 구분된 두 줄, 즉 필요한 물건과 챙긴 물건을 읽고, 시작 코드에서 집합 needed와 packed를 만듭니다.
항목을 , 로 연결해 두 줄을 출력합니다.
Missing:뒤에 챙기지 않은 필요한 물건을 출력합니다.Extra:뒤에 필요하지 않은 챙긴 물건을 출력합니다.
순회하는 집합의 순서를 유지하세요. 빈 목록 대신 none을 출력하세요. 입력이 다음과 같을 때:
rope torch map
torch apple출력은 다음과 같습니다.
Missing: rope, map
Extra: apple직접 해보기
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
# 두 차집합을 만듭니다
# 결과를 출력합니다
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리와 흐름의 모든 레슨
직접 연습해 보세요: 온라인 GDScript 컴파일러