Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مراجعة - الترتيب المخصص

جزء من قسم البرمجة كائنية التوجه في رحلة 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) }

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: Playground لـ Swift