Menu
Coddy logo textTech

Riepilogo - Ordinamento personalizzato

Fa parte della sezione Programmazione orientata agli oggetti del percorso Swift di Coddy. Lezione 41 di 57.

challenge icon

Sfida

Difficile

Una libreria musicale ordina e deduplica i brani usando i protocolli standard. Song ha title, artist, year e rating (1-5). Rendila Equatable e Hashable in base a title e artist, ignorando maiuscole e minuscole (la stessa canzone dello stesso artista), Comparable in base alla valutazione, dalla più alta alla più bassa, poi all'anno, dal più recente al più vecchio, e infine al titolo in ordine alfabetico, e CustomStringConvertible come Title - Artist (2019) **** con una stella per ogni punto di valutazione.

Completa playlist(_:), che rimuove i duplicati (mantenendo il primo) con un Set, ordina con sorted() e restituisce le descrizioni dei brani, poi duplicates removed: 1.

Il codice fornito legge i brani da righe nel formato title,artist,year,rating e stampa ogni riga restituita.

Il tuo codice va in Song.swift e Functions.swift. main.swift contiene il codice di input/output fornito e non può essere modificato.

Provalo tu

// Supplied input/output code: keep it as it is
var input: [String] = []
while let line = readLine() { input.append(line) }
let songs = input.map { line -> Song in
    let p = line.split(separator: ",").map(String.init)
    return Song(title: p[0], artist: p[1], year: Int(p[2])!, rating: Int(p[3])!)
}
for line in playlist(songs) { print(line) }

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Playground Swift