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.
Desafio
DifícilUma 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
1Classes e Objetos
Trabalhando com ArquivosDefinindo ClassesMétodos e selfInicializadoresClasses são ReferênciasRevisão - Cartão da Biblioteca4Encapsulamento
Controle de AcessoSomente Leitura ExternaProtegendo o EstadoInicializadores que Podem FalharRevisão - Conta Bancária7Polimorfismo e Genéricos
PolimorfismoConversão de TiposFunções GenéricasTipos GenéricosRevisão - Calculadora de Formas2Structs e Tipos de Valor
StructsSemântica de ValorMétodos MutáveisStruct ou ClasseRecapitulação - Item de Inventário5Herança
SubclassesSobrescrita de métodosInicializadores e superfinal e hierarquiasRecapitulação - Hierarquia de funcionários8Protocolos Padrão
CustomStringConvertibleEquatableComparableHashableRecapitulação - Ordenação Personalizada11Projeto: Gerenciamento de Biblioteca
Livros e MembrosEmpréstimo de LivrosPratique por conta própria: Playground de Swift