Menu
Coddy logo textTech

Programador de eventos

Parte de la sección Programación orientada a objetos del Journey de Swift de Coddy. Lección 56 de 57.

challenge icon

Desafío

Difícil

Construye un programador de eventos con los protocolos estándar. Event es una estructura con title, day (1-31), y las horas start y end. Es Comparable (por día, después por inicio y después por título), Hashable y Equatable únicamente según el título y el día (el mismo evento introducido dos veces), y CustomStringConvertible como day 3 09-11 standup. La clase Scheduler tiene add(_:), que devuelve added, duplicate (el mismo título en el mismo día) o conflicts with <title> (un evento existente en ese día cuyas horas se solapan: uno comienza antes de que termine el otro). agenda() devuelve los eventos ordenados, y busiestDay() devuelve busiest day 3: 5h o no events.

El código proporcionado lee los eventos como líneas con el formato title,day,start,end e imprime la respuesta para cada uno, después la agenda (un evento por línea) y el día con más actividad.

Tu código debe ir en Event.swift y Scheduler.swift. main.swift contiene el código proporcionado de entrada y salida y no se puede editar.

Pruébalo tú mismo

// Código de entrada/salida suministrado: déjalo 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())

Todas las lecciones de Programación orientada a objetos

Practica por tu cuenta: Playground de Swift