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.
Sfida
MedioLeggi 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...| 2Provalo 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>'
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Conteggio e indiciMaiuscole, minuscole e rimozione degli spaziRicerca nelle stringheSuddivisione e unioneSostituzione di sottostringheRiepilogo - Verifica del nome utente4Insiemi
Creare insiemiUnione e intersezioneDifferenza e differenza simmetricaSottoinsieme e sovrainsiemeRiepilogo - Filtro per tag7Progetto - Tracciatore di abitudini
Panoramica del progettoSegna come completato10Progetto - Motore di quiz
Panoramica del progettoPorre domande2Intervalli e passi
Intervalli chiusi e semiapertiPassoMetodi degli intervalliIntervalli in switchRiepilogo - Griglia del calendario5Funzioni di ordine superiore Parte 1
MapFilterReduceConcatenare map, filter e reduceRiepilogo - Statistiche sulle paroleEsercitati da solo: Playground Swift