Unione e intersezione
Fa parte della sezione Logica e flusso del percorso GDScript di Coddy. Lezione 34 di 78.
Due insiemi possono essere combinati in due modi comuni:
- L’unione contiene tutti gli elementi che appartengono a uno dei due insiemi.
- L’intersezione contiene solo gli elementi che appartengono a entrambi gli insiemi.
GDScript non ha operatori per queste operazioni, quindi le costruisci con i cicli. Per l’unione, aggiungi gli elementi di entrambi gli insiemi a un nuovo insieme. Un elemento presente in entrambi gli insiemi finisce sulla stessa chiave:
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"]Poiché ogni valore è true, merged() restituisce la stessa unione in una sola chiamata: var either := mia.merged(leo). Restituisce un nuovo dizionario e lascia mia invariato.
Per l'intersezione, itera su un insieme e conserva gli elementi che anche l'altro insieme contiene:
var both := {}
for place in mia:
if leo.has(place):
both[place] = true
print(both.keys()) # ["cave"]Quando gli insiemi non hanno elementi in comune, l’intersezione è vuota e both.keys() è [].
Sfida
FacileDue giocatori hanno sbloccato alcune abilità. Il programma legge due righe, le abilità del primo giocatore e quelle del secondo, separate da spazi, e il codice iniziale crea gli insiemi first e second.
Stampa l’unione e l’intersezione dei due insiemi, con gli elementi separati da , :
All skills:seguito dall’unione: le abilità del primo giocatore, poi le nuove abilità del secondo giocatoreShared skills:seguito dall’intersezione, nell’ordine del primo giocatore, oppurenonese non hanno abilità in comune
Per l’input:
jump dash
dash swiml’output è:
All skills: jump, dash, swim
Shared skills: dashProvalo tu
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
# Costruisci l'unione e l'intersezione
# Stampa i risultati
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Stringhe in dettaglio
Metodi delle stringheRicerca nelle stringheSostituzione e trimDividere e unireRipasso - verifica del nome utente4Dizionari - Parte 2
Dizionari annidatiArray di dizionariUnire dizionariCopiare dizionariRiepilogo - Contatore di frequenza7Enumerazioni
Che cos'è un'enumerazione?Definire un'enumerazioneValori dell'enumerazioneEnumerazioni in MatchRiepilogo - Semaforo10Funzioni avanzate
Restituire più valoriFunzioni lambda - Parte 1Funzioni lambda - Parte 2Ripasso - Ordinamento con lambdaFunzioni ricorsive - Parte 1Funzioni ricorsive - Parte 2Ripasso - Somma di un array annidato13Sistema di gestione dell'inventario
Panoramica del progettoAggiungere un articolo2Decisioni avanzate
Match con variabiliGuardie di matchPattern per arrayPattern per dizionariVerifiche di appartenenzaRiepilogo - Parser di comandi5Applicazione Rubrica
Visualizzare il menuAggiungere un contatto8Gestione dei registri degli studenti
Panoramica del progettoAggiungi studente11Funzioni di ordine superiore
Il metodo mapIl metodo filterIl metodo reduceany e allRipasso - Validatore di emailRipasso - Elaboratore di numeri3Array multidimensionali
Fondamenti degli array 2DAccedere agli elementi di un array 2DCicli annidati con array 2DRipasso - Array 2DArray frastagliatiSchemi comuni con gli array 2DRipasso - Tabellone di gioco6Insiemi con i dizionari
Che cos'è un insieme?Il dizionario come insiemeAggiungere e rimuovereUnione e intersezioneDifferenza tra insiemiRiepilogo - Rimuovere i duplicati9Aggregazione avanzata dei dati
Somma dei valoriTrovare minimo e massimoOrdinamento personalizzatoRiepilogo - Ordinatore di dizionariEsercitati da solo: Compilatore GDScript online