Suma i część wspólna
Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 34 z 78.
Dwa zbiory można połączyć na dwa popularne sposoby:
- Suma zawiera wszystkie elementy, które należą do któregokolwiek z tych zbiorów.
- Część wspólna zawiera tylko elementy, które należą do obu zbiorów.
GDScript nie ma dla tych operacji operatorów, więc tworzysz je za pomocą pętli. Aby uzyskać sumę, dodaj elementy obu zbiorów do nowego zbioru. Element należący do obu zbiorów trafi pod ten sam klucz:
var mia := {"forest": true, "cave": true}
var leo := {"cave": true, "tower": true}
var either := {}
for place in mia:
either[place] = true
for place in leo:
either[place] = true
print(either.keys()) # ["forest", "cave", "tower"]Ponieważ każda wartość to true, merged() zwraca tę samą sumę w jednym wywołaniu: var either := mia.merged(leo). Zwraca nowy słownik i pozostawia mia bez zmian.
Aby wyznaczyć część wspólną, przejdź pętlą po jednym zbiorze i zachowaj elementy, które znajdują się w drugim zbiorze:
var both := {}
for place in mia:
if leo.has(place):
both[place] = true
print(both.keys()) # ["cave"]Gdy zbiory nie mają wspólnych elementów, ich część wspólna jest pusta, a both.keys() ma wartość [].
Wyzwanie
ŁatwyDwóch graczy odblokowało pewne umiejętności. Program odczytuje dwa wiersze: umiejętności pierwszego gracza i drugiego gracza, oddzielone spacjami, a kod początkowy tworzy zbiory first i second.
Wypisz sumę i część wspólną tych dwóch zbiorów, łącząc elementy za pomocą , :
All skills:a następnie sumę: umiejętności pierwszego gracza, a potem nowe umiejętności drugiego graczaShared skills:a następnie część wspólną, w kolejności umiejętności pierwszego gracza, albonone, jeśli nie mają wspólnych umiejętności
Dla danych wejściowych:
jump dash
dash swimdane wyjściowe to:
All skills: jump, dash, swim
Shared skills: dashSpróbuj swoich sił
extends Node
func _ready():
var first := {}
for skill in OS.read_string_from_stdin().split(" ", false):
first[skill] = true
var second := {}
for skill in OS.read_string_from_stdin().split(" ", false):
second[skill] = true
# Utwórz sumę i część wspólną zbiorów
# 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