Menu
CoddyTech

Diferencia de conjuntos

Parte de la sección Lógica y flujo del Journey de GDScript de Coddy. Lección 35 de 78.

La diferencia de dos conjuntos contiene los elementos del primer conjunto que no están en el segundo. Recorre el primer conjunto y conserva los elementos que faltan en el segundo:

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"]

El orden de los conjuntos importa. La diferencia de packed y needed es ["apple"]: lo que empacaste pero no necesitaste.

Las dos diferencias juntas forman la diferencia simétrica: los elementos que están en exactamente uno de los conjuntos. En este caso, son rope, map y apple.

Para comprobar que no falte nada, has_all() toma un arreglo y devuelve true cuando cada elemento del arreglo es una clave del diccionario:

print(packed.has_all(needed.keys())) # false: faltan rope y map
challenge icon

Desafío

Fácil

Antes de un viaje, comparas lo que necesitas con lo que empacaste. El programa lee dos líneas, los artículos necesarios y los artículos empacados, separados por espacios, y el código inicial crea los conjuntos needed y packed.

Imprime dos líneas, con los elementos unidos por , :

  • Missing: seguido de los artículos necesarios que no están empacados
  • Extra: seguido de los artículos empacados que no son necesarios

Mantén el orden del conjunto que recorres. Imprime none en lugar de una lista vacía. Para la entrada:

rope torch map
torch apple

la salida es:

Missing: rope, map
Extra: apple

Pruébalo tú mismo

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

	# Calcula las dos diferencias

	# Imprime los resultados
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y flujo

Practica por tu cuenta: Compilador de GDScript online