Menu
Coddy logo textTech

Özet - Görev Kuyruğu

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

challenge icon

Görev

Orta

İki Reference Class kullanarak bir görev kuyruğu oluşturun. Her iki tanım da suppressMessages() içine alınmıştır.

  • Task, Task.R içinde: title, priority (numeric) ve done (logical) alanları; initialize, verilmediğinde done değerini FALSE yapar; label(), tamamlanmış bir görev için [x] fix (3) veya [ ] fix (3) döndürür.
  • TaskQueue, TaskQueue.R içinde: tasks alanı (bir list); add(title, priority) yeni bir Task ekler ve invisible(.self) döndürür; next_task(), en yüksek önceliğe sahip açık görevin başlığını (eşitlik durumunda daha önce ekleneni) veya nothing döndürür; complete(title), bu ada sahip ilk açık görevi tamamlandı olarak işaretler ve TRUE, aksi takdirde FALSE döndürür; report(), eklenme sırasına göre her görev için bir etiket ve ardından open: 2 döndürür.

Verilen kod add fix 3, next ve done fix girdilerini okur; ardından tek bir zincirleme çağrıyla iki görev ekler ve raporu yazdırır.

Kodunuz Task.R ve TaskQueue.R dosyalarına yazılmalıdır. main.R, verilen girdi/çıktı kodunu içerir ve düzenlenemez.

Kendin dene

source("Task.R")
source("TaskQueue.R")

# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input <- suppressWarnings(readLines(file("stdin")))
q <- TaskQueue$new()
for (line in input) {
  p <- strsplit(line, " ")[[1]]
  if (p[1] == "add") {
    q$add(p[2], as.numeric(p[3]))
  } else if (p[1] == "next") {
    cat("next: ", q$next_task(), "\n", sep = "")
  } else if (p[1] == "done") {
    cat(if (q$complete(p[2])) "completed " else "no open task ", p[2], "\n", sep = "")
  }
}
q$add("late", 1)$add("later", 1)
writeLines(q$report())

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

Kendi başına pratik yap: Online R derleyicisi