Menu
Coddy logo textTech

Recapitulação - Ordenação Personalizada

Parte da seção Programação Orientada a Objetos do Journey de Swift da Coddy. Lição 41 de 57.

challenge icon

Desafio

Difícil

Uma biblioteca de músicas ordena e remove duplicatas usando os protocolos padrão. Song possui title, artist, year e rating (1-5). Torne-a Equatable e Hashable com base em title e artist, ignorando maiúsculas e minúsculas (a mesma música do mesmo artista), Comparable por avaliação da maior para a menor, depois por ano do mais novo para o mais antigo, depois por título em ordem alfabética, e CustomStringConvertible como Title - Artist (2019) ****, com uma estrela por ponto de avaliação.

Complete playlist(_:), que remove duplicatas (mantendo a primeira) com um Set, ordena com sorted() e retorna as descrições das músicas, seguidas de duplicates removed: 1.

O código fornecido lê as músicas em linhas no formato title,artist,year,rating e imprime cada linha retornada.

Seu código deve ser colocado em Song.swift e Functions.swift. main.swift contém o código fornecido de entrada/saída e não pode ser editado.

Experimente você mesmo

// Código de entrada/saída fornecido: mantenha-o como está
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) }

Todas as lições de Programação Orientada a Objetos

Pratique por conta própria: Playground de Swift