Menu
Coddy logo textTech

Agrupación de valores

Parte de la sección Lógica y Flujo del Journey de Swift de Coddy. Lección 16 de 56.

El patrón de subíndice no predeterminado es la base de dos formas cotidianas.

Contador de frecuencia: cuenta cuántas veces aparece cada clave.

let letters = ["a", "b", "a", "c", "a"]
var counts: [String: Int] = [:]
for letter in letters {
    counts[letter, default: 0] += 1
}
// counts == ["a": 3, "b": 1, "c": 1]

Agrupación: recopila valores bajo una clave derivada:

let words = ["hi", "hello", "yo", "hey"]
var byLength: [Int: [String]] = [:]
for w in words {
    byLength[w.count, default: []].append(w)
}
// [2: ["hi", "yo"], 5: ["hello"], 3: ["hey"]]

El valor predeterminado para el caso de agrupación es un arreglo vacío. El valor default: se usa únicamente cuando falta la clave; después, el lado derecho muta la entrada directamente.

challenge icon

Desafío

Intermedio

Lee una sola línea de entrada: una lista de palabras separadas por comas.

Imprime, en este orden:

  1. Una línea por cada longitud de palabra que aparezca en la entrada, ordenadas de la más corta a la más larga, con el formato <length>: <count>, donde count es cuántas palabras de esa longitud aparecieron
  2. Most common length: <n>, donde n es la longitud con el recuento más alto. En caso de empate, elige la longitud más corta.

Para la entrada hi,hello,yo,hey,bonjour,bye, la salida es:

2: 2
3: 2
5: 1
7: 1
Most common length: 2

(Las longitudes 2 y 3 aparecen dos veces. Se deshace el empate eligiendo la más corta, por lo que gana 2.)

Pruébalo tú mismo

let words = readLine()!.components(separatedBy: ",")

// TODO: contar palabras por longitud; imprimir ordenadas; imprimir la más común (empates: más corta)
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: Playground de Swift