Menu
Coddy logo textTech

Grupowanie wartości

Część sekcji Logika i przepływ programu ścieżki Swift w Coddy. Lekcja 16 z 56.

Wzorzec domyślnego indeksu dolnego jest podstawą dwóch często spotykanych kształtów.

Licznik częstotliwości: zlicz, ile razy pojawia się każdy klucz.

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]

Grupowanie w kubełki: zbieraj wartości według wyprowadzonego klucza:

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"]]

Domyślną wartością w przypadku grupowania jest pusta tablica. Wartość default: jest używana tylko wtedy, gdy brakuje klucza, a następnie prawa strona modyfikuje wpis w miejscu.

challenge icon

Wyzwanie

Średni

Wczytaj jeden wiersz wejścia: listę słów rozdzielonych przecinkami.

Wypisz w tej kolejności:

  1. Jeden wiersz dla każdej długości słowa występującej na wejściu, posortowanej od najkrótszej do najdłuższej, w formacie <length>: <count>, gdzie count oznacza liczbę słów o tej długości
  2. Most common length: <n>, gdzie n to długość o największej liczbie wystąpień. W przypadku remisu wybierz krótszą długość.

Dla wejścia hi,hello,yo,hey,bonjour,bye wynikiem jest:

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

(Długości 2 i 3 występują po dwa razy. Remis rozstrzyga krótsza długość, więc wygrywa 2.)

Spróbuj swoich sił

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

// TODO: policz słowa według długości; wypisz posortowane; wypisz najczęściej występującą długość (przy remisie: krótsza)
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Edytor online Swift