Rückblick – Bestenliste
Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy. Lektion 32 von 56.
Aufgabe
MittelSie erstellen eine Bestenliste. Lesen Sie eine einzelne Eingabezeile ein: eine durch Kommas getrennte Liste von name:score Einträgen. Einige Einträge haben eine nicht-ganzzahlige Punktzahl und sollten übersprungen werden (verwenden Sie compactMap).
Geben Sie die drei besten Spieler nach absteigender Punktzahl aus, einen pro Zeile, im Format:
<rank>. <name> - <score>Die Ränge beginnen bei 1. Lösen Sie Gleichstände alphabetisch nach dem Namen auf. Wenn weniger als drei gültige Einträge vorhanden sind, geben Sie alle aus.
Geben Sie nach der Bestenliste Avg: <n> mit dem ganzzahligen Durchschnitt jeder gültigen Punktzahl aus (Richtung Null abgerundet, keine Dezimalstellen). Wenn keine gültigen Einträge vorhanden sind, geben Sie Avg: 0 aus.
Für die Eingabe alice:90,bob:bad,cara:85,dan:90,eve:70,fin:99 lautet die Ausgabe:
1. fin - 99
2. alice - 90
3. dan - 90
Avg: 86Probier es selbst
let entries = readLine()!.components(separatedBy: ",")
// TODO: compactMap zu (Name, Punktzahl); sortieren nach Punktzahl absteigend, Gleichstand nach Name;
// die Top 3 ausgeben; dann den Durchschnitt aller gültigen Punktzahlen
Alle Lektionen in Logik & Kontrollfluss
1Strings im Detail
Zählen und IndizesGroß-/Kleinschreibung und TrimSuchen in StringsAufteilen und ZusammenfügenTeilstrings ersetzenRückblick – Benutzernamen prüfen4Mengen
Mengen erstellenVereinigung und SchnittmengeSubtraktion und symmetrische DifferenzTeilmenge und ObermengeWiederholung – Tag-Filter7Projekt – Gewohnheitstracker
ProjektübersichtAls erledigt markieren2Bereiche & Schrittweiten
Geschlossen vs. halboffenSchrittweiteBereichsmethodenBereiche in SwitchRückblick – Kalender-Raster5Funktionen höherer Ordnung Teil 1
MapFilterReduceVerketten von Map, Filter und ReduceRückblick – Wortstatistik3Wörterbücher
Wörterbücher deklarierenOptionale SucheWörterbücher aktualisierenWörterbücher durchlaufenWerte gruppierenRückblick – Inventar6Funktionen höherer Ordnung Teil 2
compactMapflatMapsorted(by:)Pipelines erstellenRückblick – BestenlisteÜbe selbstständig: Swift-Playground