Menu
CoddyTech

Rangkuman, Pengurutan Kustom

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Swift di Coddy. Pelajaran 41 dari 57.

challenge icon

Tantangan

Sulit

Sebuah library musik mengurutkan lagu dan menghapus duplikat menggunakan protokol standar. Song memiliki title, artist, year, dan rating (1-5). Buat agar Song mematuhi Equatable dan Hashable berdasarkan title dan artist tanpa membedakan huruf besar dan kecil (lagu yang sama oleh artis yang sama), mematuhi Comparable dengan urutan rating dari tertinggi ke terendah, lalu tahun dari terbaru ke terlama, lalu judul menurut abjad, serta mematuhi CustomStringConvertible dengan format Title - Artist (2019) ****, dengan satu bintang untuk setiap poin rating.

Lengkapi playlist(_:), yang menghapus duplikat (dengan mempertahankan kemunculan pertama) menggunakan Set, mengurutkan dengan sorted(), lalu mengembalikan deskripsi lagu, kemudian duplicates removed: 1.

Kode yang disediakan membaca lagu dari baris dengan format title,artist,year,rating dan mencetak setiap baris yang dikembalikan.

Tulis kodemu di Song.swift dan Functions.swift. main.swift berisi kode input/output yang disediakan dan tidak boleh diedit.

Coba sendiri

// Kode input/output yang disediakan: biarkan tetap seperti semula
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) }

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Playground Swift