Menu
Coddy logo textTech

Повторение — пользовательская сортировка

Часть раздела Объектно-ориентированное программирование путешествия по Swift на Coddy. Урок 41 из 57.

challenge icon

Задание

Сложно

Музыкальная библиотека сортирует песни и удаляет дубликаты с помощью стандартных протоколов. Song содержит title, artist, year и rating (1–5). Сделайте его Equatable и Hashable по title и artist, игнорируя регистр (одна и та же песня одного и того же исполнителя), Comparable — сначала по рейтингу от высокого к низкому, затем по году от нового к старому, затем по названию в алфавитном порядке, а CustomStringConvertible — в виде Title - Artist (2019) ****, где одна звезда соответствует одному баллу рейтинга.

Завершите playlist(_:): удалите дубликаты (сохраняя первый) с помощью Set, отсортируйте с помощью sorted() и верните описания песен, а затем duplicates removed: 1.

Предоставленный код считывает песни в виде строк title,artist,year,rating и выводит каждую возвращённую строку.

Ваш код должен находиться в Song.swift и Functions.swift. В main.swift находится предоставленный код ввода и вывода, его нельзя редактировать.

Попробуйте сами

// Предоставленный код ввода/вывода: оставьте его как есть
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) }

Все уроки раздела Объектно-ориентированное программирование

Потренируйтесь самостоятельно: Песочница Swift