מתזמן אירועים
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Swift של Coddy. שיעור 56 מתוך 57.
אתגר
קשהבנה מתזמן אירועים עם הפרוטוקולים הסטנדרטיים. Event הוא מבנה עם title, day (1-31), start ושעות end. הוא תואם ל־Comparable (לפי היום, אחר כך שעת ההתחלה ואז הכותרת), ל־Hashable ול־Equatable לפי הכותרת והיום בלבד (אותו אירוע הוזן פעמיים), וגם ל־CustomStringConvertible ומוצג כך: day 3 09-11 standup. למחלקה Scheduler יש את add(_:), שמחזירה added, duplicate (אותה כותרת באותו יום) או conflicts with <title> (אירוע קיים באותו יום ששעותיו חופפות: אחד מתחיל לפני שהאחר מסתיים). agenda() מחזירה את האירועים ממוינים, ו־busiestDay() מחזירה busiest day 3: 5h או no events.
הקוד שסופק קורא אירועים בשורות בפורמט title,day,start,end ומדפיס את התשובה עבור כל אחד מהם, ואז את סדר היום (אירוע אחד בכל שורה) ואת היום העמוס ביותר.
הקוד שלך צריך להיכנס לקבצים Event.swift ו־Scheduler.swift. הקובץ main.swift מכיל את קוד הקלט/פלט שסופק ואי אפשר לערוך אותו.
נסו בעצמכם
// קוד הקלט/פלט שסופק: יש להשאיר אותו כפי שהוא
var input: [String] = []
while let line = readLine() { input.append(line) }
let scheduler = Scheduler()
for line in input {
let p = line.split(separator: ",").map(String.init)
print(scheduler.add(Event(title: p[0], day: Int(p[1])!, start: Int(p[2])!, end: Int(p[3])!)))
}
for e in scheduler.agenda() { print(e) }
print(scheduler.busiestDay())
כל השיעורים ביחידה תכנות מונחה עצמים
תרגלו בעצמכם: Swift אונליין