Menu
CoddyTech

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() è [].

challenge icon

Sfida

Facile

Due 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 giocatore
  • Shared skills: seguito dall’intersezione, nell’ordine del primo giocatore, oppure none se non hanno abilità in comune

Per l’input:

jump dash
dash swim

l’output è:

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

Provalo 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
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore GDScript online