Menu
Coddy logo textTech

Wochenraster

Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy — Lektion 36 von 56.

Es ist Zeit, den Kalender zu drucken. Erstellen Sie für jede Gewohnheit ein Raster mit sieben Zeichen, wobei X für erledigte Tage und . für die übrigen Tage steht.

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

Nützliches Idiom: Baue das Gitter als ein Array von Zeichen auf und wandle es dann einmalig in einen String um.

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

days ist 1-basiert (Mo = 1), aber Swift-Arrays sind 0-basiert, subtrahieren Sie also 1 beim Zuweisen. Tage außerhalb des Bereichs würden zu einem Absturz führen, vertrauen Sie also dem Eingabeformat.

challenge icon

Aufgabe

Mittel

Lies eine einzelne Eingabezeile ein: eine durch Kommas getrennte Liste von habit:day Einträgen. Erstelle das Dictionary wie zuvor und gib dann pro Gewohnheit (alphabetisch sortiert) eine Zeile in folgendem Format aus:

<habit> |<grid>| <count>

wobei grid die sieben Zeichen lange X/. Zeichenfolge ist und count die Anzahl der eindeutigen erledigten Tage für diese Gewohnheit angibt.

Für die Eingabe read:1,read:3,read:5,workout:2,workout:4 lautet die Ausgabe:

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

Spickzettel

Erstelle ein Raster mit 7 Zeichen mit X an erledigten Tagen und . an anderen Stellen (Tage sind 1-basiert):

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

Probier es selbst

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: Erstelle ein 7-Slot-Raster für jede Gewohnheit; drucke '<Name> |<Raster>| <Anzahl>'
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Kontrollfluss