Menu
Coddy logo textTech

Agendador de Eventos

Parte da seção Programação Orientada a Objetos do Journey de Swift da Coddy. Lição 56 de 57.

challenge icon

Desafio

Difícil

Crie um agendador de eventos com os protocolos padrão. Event é uma struct com title, day (1-31), e os horários de start e end. Ela é Comparable (por dia, depois por início e, por fim, por título), Hashable e Equatable considerando apenas título e dia (o mesmo evento inserido duas vezes), e CustomStringConvertible como day 3 09-11 standup. A classe Scheduler tem add(_:), que retorna added, duplicate (mesmo título no mesmo dia) ou conflicts with <title> (um evento existente nesse dia cujos horários se sobrepõem: um começa antes de o outro terminar). agenda() retorna os eventos ordenados, e busiestDay() retorna busiest day 3: 5h ou no events.

O código fornecido lê os eventos em linhas no formato title,day,start,end e imprime a resposta para cada um, depois a agenda (um evento por linha) e o dia mais movimentado.

Seu código deve estar em Event.swift e Scheduler.swift. main.swift contém o código fornecido de entrada/saída e não pode ser editado.

Experimente você mesmo

// Código de entrada/saída fornecido: mantenha-o 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 as lições de Programação Orientada a Objetos

Pratique por conta própria: Playground de Swift