Cómo encontrar el mínimo y el máximo
Parte de la sección Lógica y flujo del Journey de GDScript de Coddy. Lección 50 de 78.
Los arreglos tienen los métodos min() y max(), que devuelven el elemento más pequeño y el más grande:
var temps := [18, 25, 9, 31, 22]
print(temps.min()) # 9
print(temps.max()) # 31Las funciones globales min() y max() comparan los números que les pasas, lo cual resulta práctico para dos o tres valores:
print(max(4, 12, 7)) # 12
var hp: int = min(120, 100) # 100, nunca por encima de 100Las cadenas se comparan carácter por carácter, según su código Unicode. Cada letra mayúscula va antes que cada letra minúscula:
var words := ["kiwi", "apple", "Fig"]
print(words.min()) # Fig
print(words.max()) # kiwiLa misma regla se aplica a los números almacenados como texto: "9" es mayor que "56", porque el carácter 9 viene después del 5. Convierte la entrada con int() antes de comparar números.
En una matriz vacía, ambos métodos devuelven null. Para encontrar dónde está el valor más grande, pásalo a find(): temps.find(temps.max()) es 3. Para un diccionario, toma el mayor de sus valores y busca su clave con find_key(), que devuelve la primera clave con ese valor:
var scores := {"Mia": 120, "Leo": 95, "Ana": 140}
var best: int = scores.values().max()
print(scores.find_key(best), " ", best) # Ana 140max() devuelve un valor de cualquier tipo, así que declara el tipo de la variable (var best: int) en lugar de escribir :=.
Desafío
FácilEl programa lee dos líneas: números enteros separados por espacios y palabras separadas por espacios. Cada línea tiene al menos un valor.
Imprime el número más pequeño y el más grande, después la palabra más pequeña y la más grande, con min() y max(). Compara los números como números, no como texto. Para las entradas 42 17 23 56 9 34 y kiwi apple banana cherry date, la salida es:
Smallest number: 9
Largest number: 56
Smallest word: apple
Largest word: kiwiPruébalo tú mismo
extends Node
func _ready():
var number_texts := OS.read_string_from_stdin().split(" ", false)
var words := Array(OS.read_string_from_stdin().split(" ", false))
# Convierte los números a int y luego imprime los cuatro resultados
pass
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