Menu
Coddy logo textTech

Pianificatore di eventi

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

challenge icon

Sfida

Difficile

Crea uno scheduler di eventi usando due file.

  • Event.R: la classe S3 event con i campi title, day, start, end (ore). Scrivi new_event(); validate_event(), che si interrompe con day must be from 1 to 31 oppure hours must be within 0 to 24 and start before end; la funzione di supporto event(title, day, start, end), che converte gli argomenti testuali in numeri; format.event(), che restituisce day 3 09-11 standup; e overlaps(a, b), che restituisce TRUE quando 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 restituisce add(e), che risponde duplicate per lo stesso titolo nello stesso giorno, conflicts with review quando l'evento si sovrappone a uno esistente, oppure added; agenda(), gli eventi formattati ordinati per giorno, ora di inizio e titolo; e busiest_day(), busiest: day 3 (4 hours) in base al totale delle ore (in caso di parità, il giorno precedente), oppure no 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

Esercitati da solo: Compilatore R online