Menu
Coddy logo textTech

Werte gruppieren

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

Das Muster mit dem Standardindex ist die Grundlage für zwei alltägliche Formen.

Häufigkeitszähler: Zähle, wie oft jeder Schlüssel vorkommt.

let letters = ["a", "b", "a", "c", "a"]
var counts: [String: Int] = [:]
for letter in letters {
    counts[letter, default: 0] += 1
}
// counts == ["a": 3, "b": 1, "c": 1]

Gruppieren: Werte unter einem abgeleiteten Schlüssel sammeln:

let words = ["hi", "hello", "yo", "hey"]
var byLength: [Int: [String]] = [:]
for w in words {
    byLength[w.count, default: []].append(w)
}
// [2: ["hi", "yo"], 5: ["hello"], 3: ["hey"]]

Der Standardfall für das Gruppieren ist ein leeres Array. Der Wert default: wird nur verwendet, wenn der Schlüssel fehlt; dann verändert die rechte Seite den Eintrag direkt.

challenge icon

Aufgabe

Mittel

Lies eine einzelne Eingabezeile ein: eine durch Kommas getrennte Liste von Wörtern.

Gib in dieser Reihenfolge aus:

  1. Eine Zeile für jede Wortlänge, die in der Eingabe vorkommt, sortiert von der kürzesten bis zur längsten, im Format <length>: <count>, wobei count angibt, wie viele Wörter dieser Länge vorkamen
  2. Most common length: <n>, wobei n die Länge mit der höchsten Anzahl ist. Bei Gleichstand wählst du die kürzere Länge.

Für die Eingabe hi,hello,yo,hey,bonjour,bye lautet die Ausgabe:

2: 2
3: 2
5: 1
7: 1
Most common length: 2

(Die Längen 2 und 3 kommen jeweils zweimal vor. Bei Gleichstand wird die kürzere gewählt, daher gewinnt 2.)

Probier es selbst

let words = readLine()!.components(separatedBy: ",")

// TODO: Wörter pro Länge zählen; sortiert ausgeben; häufigstes ausgeben (Gleichstand: kürzeres)
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

Übe selbstständig: Swift-Playground