Różnica zbiorów
Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 35 z 78.
Różnica dwóch zbiorów zawiera elementy pierwszego zbioru, których nie ma w drugim. Przejdź przez pierwszy zbiór i zachowaj te elementy, których brakuje w drugim:
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"]Kolejność zbiorów ma znaczenie. Różnica zbiorów packed i needed to ["apple"]: to, co spakowałeś, ale czego nie potrzebowałeś.
Te dwie różnice razem tworzą różnicę symetryczną: elementy, które należą dokładnie do jednego ze zbiorów. Tutaj są to rope, map i apple.
Aby sprawdzić, czy niczego nie brakuje, has_all() przyjmuje tablicę i zwraca true, gdy każdy jej element jest kluczem słownika:
print(packed.has_all(needed.keys())) # false: brakuje liny i mapyWyzwanie
ŁatwyPrzed wyjazdem porównujesz to, czego potrzebujesz, z tym, co spakowałeś. Program odczytuje dwa wiersze: potrzebne przedmioty i spakowane przedmioty, oddzielone spacjami, a kod początkowy tworzy zbiory needed i packed.
Wypisz dwa wiersze, łącząc elementy za pomocą , :
Missing:i dalej potrzebne przedmioty, których nie spakowanoExtra:i dalej spakowane przedmioty, które nie są potrzebne
Zachowaj kolejność zbioru, po którym wykonujesz pętlę. Zamiast pustej listy wypisz none. Dla danych wejściowych:
rope torch map
torch applewynik to:
Missing: rope, map
Extra: appleSpróbuj swoich sił
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
# Utwórz dwie różnice
# Wypisz wyniki
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Łańcuchy znaków — zagadnienia zaawansowane
Metody łańcuchów znakówWyszukiwanie w łańcuchach znakówZastępowanie i przycinanieDzielenie i łączeniePodsumowanie — sprawdzanie nazwy użytkownika4Słowniki, część 2
Zagnieżdżone słownikiTablice słownikówŁączenie słownikówKopiowanie słownikówPodsumowanie – licznik częstotliwości7Typy wyliczeniowe
Czym jest typ wyliczeniowy?Definiowanie typu wyliczeniowegoWartości typu wyliczeniowegoTypy wyliczeniowe w matchPowtórka – sygnalizacja świetlna10Zaawansowane funkcje
Zwracanie wielu wartościFunkcje lambda — część 1Funkcje lambda — część 2Powtórka — sortowanie za pomocą lambdaFunkcje rekurencyjne — część 1Funkcje rekurencyjne — część 2Powtórka — sumowanie zagnieżdżonej tablicy13System zarządzania zapasami
Omówienie projektuDodawanie produktu2Zaawansowane podejmowanie decyzji
Dopasowanie ze zmiennymiStrażnicy dopasowaniaWzorce tablicWzorce słownikówSprawdzanie przynależnościPowtórka — parser poleceń5Aplikacja książki kontaktów
Wyświetlanie menuDodawanie kontaktu8Menedżer danych studentów
Przegląd projektuDodaj studenta3Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DPętle zagnieżdżone z tablicami 2DPodsumowanie — tablice 2DTablice postrzępioneTypowe wzorce tablic 2DPodsumowanie — plansza do gry6Zbiory ze słownikami
Czym jest zbiór?Słownik jako zbiórDodawanie i usuwanieSuma i część wspólnaRóżnica zbiorówPowtórka – usuwanie duplikatów9Zaawansowana agregacja danych
Sumowanie wartościZnajdowanie minimum i maksimumSortowanie niestandardowePodsumowanie – Sortownik słownikówPoćwicz samodzielnie: Kompilator GDScript online