Pianificatore di eventi
Fa parte della sezione Programmazione orientata agli oggetti del percorso R di Coddy. Lezione 56 di 57.
Sfida
DifficileCrea uno scheduler di eventi usando due file.
Event.R: la classe S3eventcon i campititle,day,start,end(ore). Scrivinew_event();validate_event(), che si interrompe conday must be from 1 to 31oppurehours must be within 0 to 24 and start before end; la funzione di supportoevent(title, day, start, end), che converte gli argomenti testuali in numeri;format.event(), che restituisceday 3 09-11 standup; eoverlaps(a, b), che restituisceTRUEquando due eventi si svolgono nello stesso giorno e ciascuno inizia prima che finisca l'altro.Scheduler.R:make_scheduler()mantiene privati i propri eventi e restituisceadd(e), che rispondeduplicateper lo stesso titolo nello stesso giorno,conflicts with reviewquando l'evento si sovrappone a uno esistente, oppureadded;agenda(), gli eventi formattati ordinati per giorno, ora di inizio e titolo; ebusiest_day(),busiest: day 3 (4 hours)in base al totale delle ore (in caso di parità, il giorno precedente), oppureno events.
Usa call. = FALSE. Il codice fornito legge righe nel formato title,day,start,end, stampa la risposta per ciascuna, quindi l'agenda e il giorno più impegnato.
Il tuo codice va inserito in Event.R e Scheduler.R. main.R contiene il codice fornito per l'input/output e non può essere modificato.
Provalo tu
source("Event.R")
source("Scheduler.R")
# Codice di input/output fornito: lascialo così com'è
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 = "")
Tutte le lezioni di Programmazione orientata agli oggetti
1Nozioni di base su S3
Lavorare con i fileListe con una classeFunzioni costruttriciMetodi di stampa e formattazioneValidatori e funzioni di supportoRipasso - Temperature4Incapsulamento in R
Chiusure come oggettiAmbienti come oggettiFunzioni di accessoProteggere lo statoRiepilogo - Parcometro2Generics e metodi S3
Generics e UseMethodMetodi predefinitiMetodi per i generics di baseNozioni di base su NextMethodRiepilogo - Aree delle forme5Classi S4
Definire le classi S4Slot e accessoControlli di validitàMetodi showRiepilogo - Catalogo prodotti8Classi di riferimento
Definizione delle classi di riferimentoMetodi e aggiornamenti dei campiSemantica della copiaEreditarietà e callSuperRiepilogo - coda di attività11Progetto: Gestione della biblioteca
Libri e iscrittiPrestito dei libriEsercitati da solo: Compilatore R online