Menu
Coddy logo textTech

Etkinlik Planlayıcı

Coddy'nin R Journey'sinin Nesne Tabanlı Programlama bölümünün bir parçası. Ders 56 / 57.

challenge icon

Görev

Zor

İki dosya üzerinde bir etkinlik zamanlayıcısı oluşturun.

  • Event.R: title, day, start, end (saat) alanlarına sahip S3 sınıfı event. new_event() yazın; day must be from 1 to 31 veya hours must be within 0 to 24 and start before end mesajıyla işlemi durduran validate_event(); metin bağımsız değişkenlerini sayılara dönüştüren yardımcı event(title, day, start, end); day 3 09-11 standup döndüren format.event(); ve iki etkinlik aynı gündeyse ve her biri diğerinin bitişinden önce başlıyorsa TRUE döndüren overlaps(a, b).
  • Scheduler.R: make_scheduler() etkinliklerini gizli tutar ve aynı gündeki aynı başlık için duplicate, etkinlik mevcut bir etkinlikle çakıştığında conflicts with review veya added yanıtını veren add(e) işlevini; gün, başlangıç ve başlığa göre sıralanmış biçimlendirilmiş etkinlikleri döndüren agenda() işlevini; ve toplam saate göre busiest: day 3 (4 hours) döndüren (eşitlik durumunda daha erken günü seçen) veya no events döndüren busiest_day() işlevini döndürür.

call. = FALSE kullanın. Sağlanan kod satırları title,day,start,end biçiminde okur, her biri için yanıtı, ardından gündemi ve en yoğun günü yazdırır.

Kodunuz Event.R ve Scheduler.R dosyalarına gitmelidir. main.R, sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.

Kendin dene

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

# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
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 = "")

Nesne Tabanlı Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online R derleyicisi