Menu
Coddy logo textTech

Pianificatore di eventi

Fa parte della sezione Programmazione orientata agli oggetti del percorso Swift di Coddy. Lezione 56 di 57.

challenge icon

Sfida

Difficile

Crea un pianificatore di eventi con i protocolli standard. Event è una struct con title, day (1-31), start e end come orari. È Comparable (per giorno, poi per orario di inizio, poi per titolo), Hashable ed Equatable solo in base al titolo e al giorno (lo stesso evento inserito due volte), e CustomStringConvertible, come in day 3 09-11 standup. La classe Scheduler ha add(_:), che restituisce added, duplicate (stesso titolo nello stesso giorno) oppure conflicts with <title> (un evento esistente in quel giorno i cui orari si sovrappongono: uno inizia prima che l'altro finisca). agenda() restituisce gli eventi ordinati e busiestDay() restituisce busiest day 3: 5h oppure no events.

Il codice fornito legge gli eventi da righe nel formato title,day,start,end e stampa la risposta per ciascuno, poi l'agenda (un evento per riga) e il giorno più impegnativo.

Inserisci il tuo codice in Event.swift e Scheduler.swift. main.swift contiene il codice fornito per l'input/output e non può essere modificato.

Provalo tu

// Código de entrada/salida proporcionado: mantenlo tal como está
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())

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Playground Swift