Menu
Coddy logo textTech

Récapitulatif - Tri personnalisé

Fait partie de la section Programmation orientée objet du Journey Swift de Coddy. Leçon 41 sur 57.

challenge icon

Défi

Difficile

Une bibliothèque musicale trie et déduplique des chansons à l’aide des protocoles standard. Song possède title, artist, year et rating (1-5). Rendez-le Equatable et Hashable sur title et artist sans tenir compte de la casse (la même chanson du même artiste), Comparable par note décroissante, puis par année de la plus récente à la plus ancienne, puis par titre dans l’ordre alphabétique, et CustomStringConvertible sous la forme Title - Artist (2019) ****, avec une étoile par point de note.

Complétez playlist(_:), qui supprime les doublons (en conservant le premier) à l’aide d’un Set, effectue le tri avec sorted() et renvoie les descriptions des chansons, puis duplicates removed: 1.

Le code fourni lit les chansons sous forme de lignes title,artist,year,rating et affiche chaque ligne renvoyée.

Votre code doit se trouver dans Song.swift et Functions.swift. main.swift contient le code fourni d’entrée/sortie et ne peut pas être modifié.

Essayez vous-même

// Code d'entrée/sortie fourni : le garder tel quel
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) }

Toutes les leçons de Programmation orientée objet

Entraînez-vous par vous-même : Playground Swift