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 mapDesafío
FácilAntes 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 empacadosExtra: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 applela salida es:
Missing: rope, map
Extra: applePrué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
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
1Cadenas de texto en profundidad
Métodos de cadenasBúsqueda en cadenasReemplazar y eliminar espaciosDividir y unirRepaso - Comprobación del nombre de usuario4Diccionarios, parte 2
Diccionarios anidadosArrays de diccionariosCombinar diccionariosCopiar diccionariosRepaso: contador de frecuencias7Enumeraciones
¿Qué es una enumeración?Definir una enumeraciónValores de una enumeraciónEnumeraciones en matchRepaso: semáforo10Funciones avanzadas
Devolver múltiples valoresFunciones lambda, parte 1Funciones lambda, parte 2Repaso: ordenar con lambdaFunciones recursivas, parte 1Funciones recursivas, parte 2Repaso: sumar un array anidado13Sistema de gestión de inventario
Descripción general del proyectoAñadir artículo2Toma de decisiones avanzada
Coincidencia con variablesGuardas de coincidenciaPatrones de arraysPatrones de diccionariosComprobaciones de pertenenciaRepaso: analizador de comandos5Aplicación de agenda de contactos
Mostrar menúAñadir contacto8Gestor de expedientes estudiantiles
Descripción del proyectoAgregar estudiante3Arrays multidimensionales
Conceptos básicos de arrays 2DAcceso a elementos de arrays 2DBucles anidados con arrays 2DRepaso: arrays 2DArrays irregularesPatrones comunes de arrays 2DRepaso: tablero de juego6Conjuntos con diccionarios
¿Qué es un conjunto?El diccionario como conjuntoAñadir y eliminarUnión e intersecciónDiferencia de conjuntosRepaso: eliminar duplicados9Agregación avanzada de datos
Suma de valoresCómo encontrar el mínimo y el máximoOrdenación personalizadaRepaso: organizador de diccionariosPractica por tu cuenta: Compilador de GDScript online