¿Qué es un conjunto?
Parte de la sección Lógica y flujo del Journey de GDScript de Coddy. Lección 31 de 78.
Un conjunto es una colección de valores únicos: cada valor está en él una vez o ninguna. La pregunta que le haces a un conjunto es «¿este valor es un miembro?». Las insignias que ha ganado un jugador, los niveles que ya ha visitado y los nombres de usuario que ya se han elegido son conjuntos.
Un arreglo conserva cada copia que agregues:
var pickups := ["sword", "shield", "sword"]
print(pickups.size()) # 3GDScript no tiene un tipo Set. En su lugar, usas un diccionario: sus claves son únicas, así que las claves son los miembros del conjunto. Los valores no se usan y, por convención, todos los valores son true:
var items := {"sword": true, "shield": true}
items["sword"] = true # ya es un elemento: nada cambia
print(items.size()) # 2
print(items.keys()) # ["sword", "shield"]keys() devuelve los miembros como una matriz, en el orden en que se añadieron por primera vez. Un conjunto vacío es un diccionario vacío, {}.
Un literal de conjunto enumera cada miembro una sola vez. Escribir la misma clave dos veces dentro de {} es un error que detiene el programa antes de que se ejecute.
Para indicar explícitamente el tipo del conjunto, usa un diccionario tipado: var badges: Dictionary[String, bool] = {}
Desafío
FácilUn jugador jugó cuatro partidas y obtuvo una insignia en cada una. Algunas insignias se repiten. El programa lee cuatro líneas de entrada, un nombre de insignia por línea.
Añade cada insignia al conjunto badges y después imprime el número de insignias diferentes y los elementos del conjunto como un array. Para las insignias Sniper, Medic, Sniper y Builder, la salida es:
Unique badges: 3
["Sniper", "Medic", "Builder"]Pruébalo tú mismo
extends Node
func _ready():
var badges := {}
for i in range(4):
var badge := OS.read_string_from_stdin()
# Añade la insignia al conjunto
pass
# Imprime la cantidad de insignias y las insignias
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