Menu
Coddy logo textTech

Grille hebdomadaire

Fait partie de la section Logique et Flux du Journey Swift de Coddy — leçon 36 sur 56.

Il est temps d'afficher le calendrier. Pour chaque habitude, générez une grille de sept caractères avec un X pour les jours effectués et un . ailleurs.

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

Astuce utile : construisez la grille sous forme d'un tableau de caractères, puis transformez-le en String une seule fois.

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

days est indexé à partir de 1 (Mon = 1) mais les tableaux Swift sont indexés à partir de 0, donc soustrayez 1 lors de l'assignation. Des jours hors plage provoqueraient un plantage, donc faites confiance au format d'entrée.

challenge icon

Défi

Moyen

Lisez une seule ligne d'entrée : une liste d'entrées habit:day séparées par des virgules. Construisez le dictionnaire comme précédemment, puis affichez une ligne par habitude (triée par ordre alphabétique) au format :

<habit> |<grid>| <count>

grid est la chaîne de sept caractères X/. et count est le nombre de jours uniques effectués pour cette habitude.

Pour l'entrée read:1,read:3,read:5,workout:2,workout:4, la sortie est :

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

Aide-mémoire

Construisez une grille de 7 caractères avec X sur les jours terminés et . ailleurs (les jours sont indexés à partir de 1) :

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

Essayez vous-même

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: construire une grille de 7 emplacements pour chaque habitude ; afficher '<nom> |<grille>| <compte>'
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et Flux