Unión e intersección
Parte de la sección Lógica y flujo del Journey de GDScript de Coddy. Lección 34 de 78.
Dos conjuntos se pueden combinar de dos maneras comunes:
- La unión contiene todos los elementos que están en cualquiera de los dos conjuntos.
- La intersección contiene solo los elementos que están en ambos conjuntos.
GDScript no tiene operadores para esto, así que los construyes con bucles. Para la unión, añade los miembros de ambos conjuntos a un conjunto nuevo. Un miembro presente en ambos conjuntos acaba en la misma clave:
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"]Como todos los valores son true, merged() da la misma unión en una sola llamada: var either := mia.merged(leo). Devuelve un diccionario nuevo y deja mia sin cambios.
Para obtener la intersección, recorre un conjunto y conserva los elementos que también estén en el otro conjunto:
var both := {}
for place in mia:
if leo.has(place):
both[place] = true
print(both.keys()) # ["cave"]Cuando los conjuntos no comparten ningún elemento, la intersección está vacía y both.keys() es [].
Desafío
FácilDos jugadores desbloquearon algunas habilidades. El programa lee dos líneas, las habilidades del primer jugador y las del segundo jugador, separadas por espacios, y el código inicial crea los conjuntos first y second.
Imprime la unión y la intersección de los dos conjuntos, con los miembros unidos por , :
All skills:seguido de la unión: las habilidades del primer jugador y, después, las nuevas habilidades del segundo jugadorShared skills:seguido de la intersección, en el orden del primer jugador, ononecuando no comparten ninguna habilidad
Para la entrada:
jump dash
dash swimla salida es:
All skills: jump, dash, swim
Shared skills: dashPruébalo tú mismo
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
# Construye la unión y la intersección
# 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