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 אונליין