Menu
Coddy logo textTech

Terminplaner

Teil des Abschnitts Objektorientierte Programmierung der R-Journey von Coddy. Lektion 56 von 57.

challenge icon

Aufgabe

Schwer

Erstelle einen Ereignisplaner über zwei Dateien.

  • Event.R: die S3-Klasse event mit den Feldern title, day, start, end (Stunden). Schreibe new_event(); validate_event(), das mit day must be from 1 to 31 oder hours must be within 0 to 24 and start before end abbricht; die Hilfsfunktion event(title, day, start, end), die die Textargumente in Zahlen umwandelt; format.event(), das day 3 09-11 standup zurückgibt; und overlaps(a, b), das TRUE liefert, wenn zwei Ereignisse am selben Tag stattfinden und jedes beginnt, bevor das andere endet.
  • Scheduler.R: make_scheduler() hält seine Ereignisse privat und gibt add(e) zurück, das bei demselben Titel am selben Tag duplicate, wenn sich das Ereignis mit einem bestehenden überschneidet conflicts with review oder added zurückgibt; außerdem agenda(), die formatierten Ereignisse, sortiert nach Tag, Beginn und Titel; und busiest_day(), busiest: day 3 (4 hours) nach der Gesamtstundenzahl (bei Gleichstand der frühere Tag) oder no events.

Verwende call. = FALSE. Der bereitgestellte Code liest Zeilen im Format title,day,start,end, gibt für jede Zeile die Antwort aus und anschließend die Agenda sowie den Tag mit der höchsten Auslastung.

Dein Code gehört in Event.R und Scheduler.R. main.R enthält den bereitgestellten Ein-/Ausgabecode und darf nicht bearbeitet werden.

Probier es selbst

source("Event.R")
source("Scheduler.R")

# Gelieferter Ein-/Ausgabe-Code: belasse ihn wie er ist
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 = "")

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-R-Compiler