Menu
CoddyTech

¿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()) # 3

GDScript 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] = {}

challenge icon

Desafío

Fácil

Un 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
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