Als erledigt markieren
Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy — Lektion 34 von 56.
Die erste Funktion: Eine Liste von „Markiere diese Gewohnheit an diesem Tag als erledigt“-Aktionen verarbeiten und einen Endzustand erzeugen.
Jede Eingabezeile ist eine Operation im Format habit:day, wobei day zwischen 1 und 7 liegt. Falls die Gewohnheit noch nicht existiert, erstelle sie mit einem leeren Array und hänge dann den Tag an. Falls ein Tag bereits für diese Gewohnheit aufgezeichnet wurde, darf er nicht doppelt aufgezeichnet werden.
Sie werden auf das Default-Subscript-Muster aus dem Dictionary-Kapitel zurückgreifen: habits[name, default: []].append(day) funktioniert, egal ob der Schlüssel existiert oder nicht.
Aufgabe
EinfachLies eine einzelne Eingabezeile ein: eine kommagetrennte Liste von habit:day-Einträgen (z. B. read:1,read:3,workout:2). Gib nach der Anwendung jeder Operation die Gewohnheiten in alphabetischer Reihenfolge aus, eine pro Zeile, im Format:
<habit>: <days_sorted_ascending_joined_with_comma>Überspringe doppelte habit:day-Paare.
Für die Eingabe read:1,read:3,workout:2,read:1,read:5,workout:4 ist die Ausgabe:
read: 1,3,5
workout: 2,4Spickzettel
Verwenden Sie das default-subscript-Muster, um an ein Dictionary von Arrays anzuhängen, wobei der Schlüssel erstellt wird, falls er noch nicht existiert:
var habits: [String: [Int]] = [:]
habits[name, default: []].append(day)
Um Duplikate zu vermeiden, prüfen Sie dies vor dem Anhängen:
if !habits[name, default: []].contains(day) {
habits[name, default: []].append(day)
}
Probier es selbst
var habits: [String: [Int]] = [:]
let ops = readLine()!.components(separatedBy: ",")
// TODO: Für jede Operation Name:Tag parsen, Tag hinzufügen, falls noch nicht vorhanden;
// dann Gewohnheiten in alphabetischer Reihenfolge mit sortierten Tagen ausgeben
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Kontrollfluss
1Strings im Detail
Zählen und IndizesGroß-/Kleinschreibung und TrimmenSuchen in StringsTeilen und ZusammenfügenTeilstrings ersetzenWiederholung – Benutzernamen-Check4Mengen
Mengen erstellenVereinigung und SchnittmengeDifferenz und symmetrische DifferenzTeilmenge und ObermengeRückblick – Tag-Filter7Projekt - Habit Tracker
ProjektübersichtAls erledigt markieren2Bereiche & Schrittweiten
Geschlossen vs. halboffenSchrittweiteRange-MethodenRanges in SwitchRückblick – Kalender-Grid5Funktionen höherer Ordnung Teil 1
MapFilterReduceVerkettung von map, filter, reduceRückblick – Wortstatistiken