Programador de eventos
Parte de la sección Programación orientada a objetos del Journey de R de Coddy. Lección 56 de 57.
Desafío
DifícilConstruye un programador de eventos en dos archivos.
Event.R: la clase S3eventcon los campostitle,day,start,end(horas). Escribenew_event();validate_event(), que se detiene conday must be from 1 to 31ohours must be within 0 to 24 and start before end; el auxiliarevent(title, day, start, end), que convierte los argumentos de texto en números;format.event(), que devuelveday 3 09-11 standup; yoverlaps(a, b),TRUEcuando dos eventos ocurren el mismo día y cada uno comienza antes de que termine el otro.Scheduler.R:make_scheduler()mantiene sus eventos privados y devuelveadd(e), que respondeduplicatepara el mismo título el mismo día,conflicts with reviewcuando el evento se superpone a uno existente, oadded;agenda(), los eventos formateados ordenados por día, hora de inicio y título; ybusiest_day(),busiest: day 3 (4 hours)según el total de horas (el día anterior en caso de empate), ono events.
Usa call. = FALSE. El código proporcionado lee líneas title,day,start,end, imprime la respuesta para cada una y, después, la agenda y el día con más actividad.
Tu código debe ir en Event.R y Scheduler.R. main.R contiene el código proporcionado de entrada/salida y no se puede editar.
Pruébalo tú mismo
source("Event.R")
source("Scheduler.R")
# Código de entrada/salida suministrado: déjalo tal como está
input <- suppressWarnings(readLines(file("stdin")))
s <- make_scheduler()
for (line in input) {
p <- strsplit(line, ",")[[1]]
reply <- tryCatch(s$add(event(p[1], p[2], p[3], p[4])), error = function(e) paste("invalid:", conditionMessage(e)))
cat(p[1], ": ", reply, "\n", sep = "")
}
cat("agenda:\n")
for (l in s$agenda()) cat(" ", l, "\n", sep = "")
cat(s$busiest_day(), "\n", sep = "")
Todas las lecciones de Programación orientada a objetos
1Fundamentos de S3
Trabajar con archivosListas con una claseFunciones constructorasMétodos de impresión y formatoValidadores y auxiliaresRepaso: temperaturas4Encapsulación en R
Cierres como objetosEntornos como objetosFunciones de accesoProtección del estadoRepaso: parquímetro2S3 Genéricos y métodos
Genéricos y UseMethodMétodos predeterminadosMétodos para genéricos baseFundamentos de NextMethodRepaso: áreas de figuras5Clases S4
Definición de clases S4Slots y accesoComprobaciones de validezMétodos showRepaso - Catálogo de productos8Clases de referencia
Definición de clases de referenciaMétodos y actualizaciones de camposSemántica de copiaHerencia y callSuperRepaso: cola de tareas11Proyecto: Gestión de biblioteca
Libros y miembrosPréstamo de librosPractica por tu cuenta: Compilador de R online