Menu
CoddyTech

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ść [].

challenge icon

Wyzwanie

Łatwy

Dwó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 gracza
  • Shared skills: a następnie część wspólną, w kolejności umiejętności pierwszego gracza, albo none, jeśli nie mają wspólnych umiejętności

Dla danych wejściowych:

jump dash
dash swim

dane wyjściowe to:

All skills: jump, dash, swim
Shared skills: dash

Spró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
quiz iconSprawdź się

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

Poćwicz samodzielnie: Kompilator GDScript online