Menu
Coddy logo textTech

Marcar como completado

Parte de la sección Lógica y Flujo del Journey de Swift de Coddy — lección 34 de 56.

La primera funcionalidad: procesar una lista de acciones de "marcar este hábito como completado en este día" y producir un estado final.

Cada línea de entrada es una operación en el formato habit:day donde day está entre 1 y 7. Si el hábito aún no existe, créalo con un arreglo vacío y luego añade el día. Si ya se ha registrado un día para ese hábito, no lo registres dos veces.

Te apoyarás en el patrón de subíndice por defecto del capítulo de diccionarios: habits[name, default: []].append(day) funciona tanto si la clave existe como si no.

challenge icon

Desafío

Fácil

Lee una sola línea de entrada: una lista separada por comas de entradas habit:day (por ejemplo, read:1,read:3,workout:2). Después de aplicar cada operación, imprime los hábitos en orden alfabético, uno por línea, en el formato:

<habit>: <days_sorted_ascending_joined_with_comma>

Omite los pares habit:day duplicados.

Para la entrada read:1,read:3,workout:2,read:1,read:5,workout:4, la salida es:

read: 1,3,5
workout: 2,4

Hoja de referencia

Usa el patrón de subíndice predeterminado para añadir elementos a un diccionario de arreglos, creando la clave si no existe:

var habits: [String: [Int]] = [:]
habits[name, default: []].append(day)

Para evitar duplicados, verifica antes de añadir:

if !habits[name, default: []].contains(day) {
    habits[name, default: []].append(day)
}

Pruébalo tú mismo

var habits: [String: [Int]] = [:]
let ops = readLine()!.components(separatedBy: ",")

// TODO: para cada op, analizar nombre:día, añadir el día si aún no está allí;
// luego imprimir los hábitos en orden alfabético con los días ordenados
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