Menu
Coddy logo textTech

Etkinlik Planlayıcı

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

challenge icon

Görev

Zor

Bir etkinlik zamanlayıcı oluşturun.

  • Event(title, day, start, end) (0 ile 24 arasındaki saatler) Comparable<Event> uygulayan ve güne, ardından başlangıç saatine, ardından başlığa göre sıralanan bir sınıftır. Başlıkları ve günleri eşleştiğinde iki etkinlik eşittir (aynı etkinliğin iki kez girilmesi); bu nedenle bu iki özellik üzerinde equals ve hashCode geçersiz kılınmalıdır. day 3 09-11 standup biçiminde, saatleri iki basamaklı olarak yazdırılır. overlaps(other), aynı gün içinde her etkinlik diğerinin bitişinden önce başlıyorsa true değerini döndürür.
  • Scheduler.add(event), etkinlik başlangıcından sonra bitmiyorsa invalid: standup, eşit bir etkinlik için duplicate, ajanda sırasındaki ilk çakışan etkinlik için conflicts with review veya added yanıtını verir.
  • agenda() etkinlikleri sıralanmış biçimde döndürür ve busiestDay(), en çok rezerve edilmiş saate sahip gün için busiest day 3: 5h (eşitlik durumunda daha erken gün) veya no events döndürür.

Verilen kod, etkinlikleri title,day,start,end satırları olarak okur, her biri için yanıtı yazdırır; ardından ajandayı (her satırda bir etkinlik) ve en yoğun günü yazdırır.

Kodunuz Event.kt ve Scheduler.kt dosyalarına yazılmalıdır. Main.kt, verilen giriş/çıkış kodunu içerir ve düzenlenemez.

Kendin dene

fun main() {
    // Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
    val input = generateSequence(::readLine).toList()
    val scheduler = Scheduler()
    for (line in input) {
        val p = line.split(",")
        println(scheduler.add(Event(p[0], p[1].toInt(), p[2].toInt(), p[3].toInt())))
    }
    for (e in scheduler.agenda()) println(e)
    println(scheduler.busiestDay())
}

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Kotlin playground