Menu
CoddyTech

Ôn tập: Sắp xếp tùy chỉnh

Thuộc phần Lập trình hướng đối tượng trong hành trình Swift của Coddy. Bài học 41 trên 57.

challenge icon

Thử thách

Khó

Thư viện nhạc sắp xếp và loại bỏ bài hát trùng lặp bằng các giao thức tiêu chuẩn. Song có title, artist, year và rating (1-5). Hãy làm cho Song tuân theo Equatable và Hashable dựa trên title và artist, không phân biệt chữ hoa chữ thường (cùng một bài hát của cùng một nghệ sĩ), tuân theo Comparable để sắp xếp theo điểm đánh giá từ cao xuống thấp, sau đó theo năm từ mới đến cũ, rồi theo tên bài hát theo thứ tự bảng chữ cái, và tuân theo CustomStringConvertible để có dạng Title - Artist (2019) **** với một dấu sao cho mỗi điểm đánh giá.

Hoàn thành playlist(_:), hàm này loại bỏ các bài hát trùng lặp bằng Set (giữ lại bài đầu tiên), sắp xếp bằng sorted() và trả về phần mô tả của các bài hát, sau đó duplicates removed: 1.

Code được cung cấp đọc các bài hát từ những dòng có dạng title,artist,year,rating và in ra từng dòng được trả về.

Đặt code của bạn trong Song.swift và Functions.swift. main.swift chứa code đầu vào/đầu ra được cung cấp và bạn không thể chỉnh sửa tệp này.

Tự làm thử

// Đoạn code đầu vào/đầu ra đã cho: giữ nguyên
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) }

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Playground Swift