Menu
Coddy logo textTech

Pianificatore di eventi

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

challenge icon

Sfida

Difficile

Crea uno scheduler di eventi.

  • Event(title, day, start, end) (ore da 0 a 24) è una classe che implementa Comparable<Event>, ordinata per giorno, poi per ora di inizio e infine per titolo. Due eventi sono uguali quando il titolo e il giorno corrispondono (lo stesso evento inserito due volte), quindi sovrascrivi equals e hashCode per queste due proprietà. Viene stampato come day 3 09-11 standup, con le ore a due cifre. overlaps(other) è vero nello stesso giorno quando ciascun evento inizia prima che l'altro finisca.
  • Scheduler.add(event) risponde invalid: standup quando l'evento non termina dopo il suo inizio, duplicate per un evento uguale, conflicts with review per il primo evento sovrapposto nell'ordine dell'agenda, oppure added.
  • agenda() restituisce gli eventi ordinati e busiestDay() restituisce busiest day 3: 5h per il giorno con il maggior numero di ore prenotate (in caso di parità, il giorno precedente), oppure no events.

Il codice fornito legge gli eventi come righe title,day,start,end, stampa la risposta per ciascuno, poi l'agenda (un evento per riga) e il giorno più impegnato.

Il tuo codice va inserito in Event.kt e Scheduler.kt. Main.kt contiene il codice di input/output fornito e non può essere modificato.

Provalo tu

fun main() {
    // Codice di input/output fornito: lascialo così com'è
    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())
}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Playground Kotlin