Vereinigung und Schnittmenge
Teil des Abschnitts Logik & Ablaufsteuerung der GDScript-Journey von Coddy. Lektion 34 von 78.
Zwei Mengen lassen sich auf zwei gängige Arten kombinieren:
- Die Vereinigung enthält alle Elemente, die in mindestens einer der beiden Mengen enthalten sind.
- Der Schnitt enthält nur die Elemente, die in beiden Mengen enthalten sind.
GDScript hat dafür keine Operatoren, also bildest du sie mit Schleifen. Für die Vereinigung fügst du die Elemente beider Mengen einer neuen Menge hinzu. Ein Element, das in beiden Mengen vorkommt, landet unter demselben Schlüssel:
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"]Da jeder Wert true ist, ergibt merged() in einem Aufruf dieselbe Vereinigung: var either := mia.merged(leo). Es gibt ein neues Dictionary zurück und lässt mia unverändert.
Für den Schnitt durchlaufe eine Menge und behalte die Elemente, die auch in der anderen Menge enthalten sind:
var both := {}
for place in mia:
if leo.has(place):
both[place] = true
print(both.keys()) # ["cave"]Wenn die Mengen keine gemeinsamen Elemente haben, ist der Schnitt leer und both.keys() ist [].
Aufgabe
EinfachZwei Spieler haben jeweils einige Fähigkeiten freigeschaltet. Das Programm liest zwei Zeilen ein: die Fähigkeiten des ersten Spielers und die des zweiten Spielers, durch Leerzeichen getrennt. Der Startcode erstellt die Mengen first und second.
Gib die Vereinigung und den Schnitt der beiden Mengen aus, wobei die Elemente durch , verbunden werden:
All skills:gefolgt von der Vereinigung: den Fähigkeiten des ersten Spielers, gefolgt von den neuen Fähigkeiten des zweiten SpielersShared skills:gefolgt vom Schnitt, in der Reihenfolge des ersten Spielers, odernone, wenn sie keine Fähigkeit gemeinsam haben
Für die Eingabe:
jump dash
dash swimlautet die Ausgabe:
All skills: jump, dash, swim
Shared skills: dashProbier es selbst
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
# Bilde die Vereinigungsmenge und die Schnittmenge
# Gib die Ergebnisse aus
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablaufsteuerung
1Strings im Detail
String-MethodenIn Strings suchenErsetzen und TrimmenAufteilen und ZusammenfügenRückblick – Benutzernamen prüfen4Wörterbücher Teil 2
Verschachtelte WörterbücherArrays aus WörterbüchernWörterbücher zusammenführenWörterbücher kopierenWiederholung – Häufigkeitszähler10Fortgeschrittene Funktionen
Mehrere Werte zurückgebenLambda-Funktionen Teil 1Lambda-Funktionen Teil 2Wiederholung – Sortieren mit LambdaRekursive Funktionen Teil 1Rekursive Funktionen Teil 2Wiederholung – Verschachteltes Array summieren13Inventarverwaltungssystem
ProjektübersichtArtikel hinzufügen2Fortgeschrittene Entscheidungsfindung
Match mit VariablenMatch-GuardsArray-MusterDictionary-MusterMitgliedschaftsprüfungenRückblick – Befehlsparser5Kontaktbuch-Anwendung
Menü anzeigenKontakt hinzufügen8Schülerdatenverwaltung
ProjektübersichtSchüler hinzufügen3Mehrdimensionale Arrays
Grundlagen zu 2D-ArraysAuf Elemente in 2D-Arrays zugreifenVerschachtelte Schleifen mit 2D-ArraysWiederholung – 2D-ArraysGezackte ArraysGängige Muster für 2D-ArraysWiederholung – Spielbrett6Mengen mit Dictionaries
Was ist eine Menge?Dictionary als MengeHinzufügen und EntfernenVereinigung und SchnittmengeMengendifferenzWiederholung – Duplikate entfernen9Fortgeschrittene Datenaggregation
Werte summierenMinimum und Maximum findenBenutzerdefiniertes SortierenRückblick – Wörterbuch-Sortierer12Einfache Fehlerbehandlung
Was ist Fehlerbehandlung?Eingaben validierenGuard ClausesFehlercodes zurückgebenRückblick – Sichere DivisionÜbe selbstständig: Online-GDScript-Compiler