Menu
Coddy logo textTech

Griglia settimanale

Fa parte della sezione Logica e flusso del percorso Swift di Coddy. Lezione 36 di 56.

È il momento di stampare il calendario. Per ogni abitudine, visualizza una griglia di sette caratteri con X nei giorni completati e . negli altri.

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

Espressione utile: costruisci la griglia come un array di caratteri, poi trasformalo in una String una sola volta.

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

days ha indice iniziale 1 (lun = 1), ma gli array Swift hanno indice iniziale 0, quindi sottrai 1 durante l'assegnazione. I giorni fuori intervallo causerebbero un arresto anomalo, quindi fidati del formato di input.

challenge icon

Sfida

Medio

Leggi una singola riga di input: un elenco di voci habit:day separate da virgole. Crea il dizionario come prima, poi stampa una riga per abitudine (in ordine alfabetico) nel formato:

<habit> |<grid>| <count>

dove grid è la stringa di sette caratteri X/. e count è il numero di giorni unici completati per quell'abitudine.

Per l'input read:1,read:3,read:5,workout:2,workout:4, l'output è:

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

Provalo tu

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: crea una griglia di 7 caselle per ogni abitudine; stampa '<name> |<grid>| <count>'
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Playground Swift