Menu
Coddy logo textTech

Cuadrícula semanal

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

Es hora de imprimir el calendario. Para cada hábito, renderiza una cuadrícula de siete caracteres con X en los días completados y . en el resto.

// days = [1, 3, 5]
// renderiza: X.X.X..

Modismo útil: construye la cuadrícula como un array de caracteres, luego conviértelo a String una sola vez.

var slots = Array(repeating: ".", count: 7)
for d in days {
    slots[d - 1] = "X"
}
let row = slots.joined()

days está indexado en 1 (Lun = 1), pero los arrays de Swift están indexados en 0, así que resta 1 al asignar. Los días fuera de rango provocarían un error, así que confía en el formato de entrada.

challenge icon

Desafío

Intermedio

Lee una sola línea de entrada: una lista separada por comas de entradas habit:day. Construye el diccionario como antes, luego imprime una línea por hábito (ordenados alfabéticamente) en el formato:

<habit> |<grid>| <count>

donde grid es la cadena de siete caracteres X/. y count es el número de días únicos completados para ese hábito.

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

read |X.X.X..| 3
workout |.X.X...| 2

Hoja de referencia

Crea una cuadrícula de 7 caracteres con X en los días completados y . en el resto (los días tienen índice 1):

var slots = Array(repeating: ".", count: 7)
for d in days {
    slots[d - 1] = "X"
}
let row = slots.joined()

Pruébalo tú mismo

var habits: [String: [Int]] = [:]
let ops = readLine()!.components(separatedBy: ",")
for op in ops {
    let parts = op.components(separatedBy: ":")
    let day = Int(parts[1])!
    if !(habits[parts[0], default: []].contains(day)) {
        habits[parts[0], default: []].append(day)
    }
}

// TODO: construir una cuadrícula de 7 espacios para cada hábito; imprimir '<nombre> |<cuadrícula>| <conteo>'
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