Differenza tra insiemi
Fa parte della sezione Logica e flusso del percorso GDScript di Coddy. Lezione 35 di 78.
La differenza di due insiemi contiene gli elementi del primo insieme che non sono nel secondo. Esegui un ciclo sul primo insieme e conserva ciò che manca nel secondo:
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"]L'ordine degli insiemi è importante. La differenza tra packed e needed è ["apple"]: ciò che hai messo in valigia ma non ti serviva.
Le due differenze insieme formano la differenza simmetrica: gli elementi che si trovano in uno solo dei due insiemi. In questo caso sono rope, map e apple.
Per verificare che non manchi nulla, has_all() riceve un array e restituisce true quando ogni suo elemento è una chiave del dizionario:
print(packed.has_all(needed.keys())) # false: mancano la corda e la mappaSfida
FacilePrima di un viaggio, confronti ciò di cui hai bisogno con ciò che hai messo in valigia. Il programma legge due righe, gli elementi necessari e quelli messi in valigia, separati da spazi, e il codice iniziale crea gli insiemi needed e packed.
Stampa due righe, con gli elementi uniti da , :
Missing:seguito dagli elementi necessari che non sono stati messi in valigiaExtra:seguito dagli elementi messi in valigia che non sono necessari
Mantieni l'ordine dell'insieme su cui esegui il ciclo. Stampa none invece di una lista vuota. Per l'input:
rope torch map
torch applel'output è:
Missing: rope, map
Extra: appleProvalo tu
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
# Calcola le due differenze
# 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