Menu
Coddy logo textTech

Planificateur d’événements

Fait partie de la section Programmation orientée objet du Journey Swift de Coddy. Leçon 56 sur 57.

challenge icon

Défi

Difficile

Créez un planificateur d’événements avec les protocoles standard. Event est une structure contenant title, day (1-31), ainsi que les heures de start et end. Elle est Comparable (d’abord par jour, puis par heure de début, puis par titre), Hashable et Equatable uniquement sur le titre et le jour (le même événement saisi deux fois), et CustomStringConvertible sous la forme day 3 09-11 standup. La classe Scheduler possède add(_:), qui renvoie added, duplicate (même titre le même jour) ou conflicts with <title> (un événement existant ce jour-là dont les horaires se chevauchent : l’un commence avant que l’autre ne se termine). agenda() renvoie les événements triés, et busiestDay() renvoie busiest day 3: 5h ou no events.

Le code fourni lit les événements sous forme de lignes title,day,start,end et affiche la réponse pour chacun, puis l’agenda (un événement par ligne) et le jour le plus chargé.

Votre code doit être placé dans Event.swift et Scheduler.swift. main.swift contient le code fourni d’entrée/sortie et ne peut pas être modifié.

Essayez vous-même

// Code d'entrée/sortie fourni : le garder tel quel
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())

Toutes les leçons de Programmation orientée objet

Entraînez-vous par vous-même : Playground Swift