Menu
Coddy logo textTech

Pianificatore di eventi

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

challenge icon

Sfida

Difficile

Realizza uno scheduler di eventi usando i metodi speciali di questa sezione. Event.new(title, day, start, finish) ha metodi di lettura per tutti e quattro gli attributi. Include Comparable e ordina per giorno, poi per ora di inizio e infine per titolo. Due eventi sono uguali con ==, eql? e hash quando hanno lo stesso titolo nello stesso giorno (lo stesso evento inserito due volte). to_s restituisce 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) restituisce duplicate per un evento uguale, conflicts with review per il primo evento memorizzato (nell'ordine) che si sovrappone e, altrimenti, lo memorizza e restituisce added. Scheduler include Enumerable; il suo each restituisce gli eventi memorizzati nell'ordine. busiest_day restituisce busiest day 3: 5h, il giorno con il maggior numero di ore programmate (in caso di parità, il giorno precedente), oppure no events.

Il codice fornito legge gli eventi da righe nel formato title,day,start,finish e stampa la risposta per ciascuno, poi tutti gli eventi nell'ordine tramite each e infine il giorno più impegnativo.

Il tuo codice va inserito in event.rb e scheduler.rb. main.rb contiene il codice di input/output fornito e non può essere modificato.

Provalo tu

require_relative 'event'
require_relative 'scheduler'

# Codice di input/output fornito: lascialo così com'è
input = []
while (line = gets)
  input << line.chomp
end
scheduler = Scheduler.new
input.each do |line|
  title, day, start, finish = line.split(",")
  puts scheduler.add(Event.new(title, day.to_i, start.to_i, finish.to_i))
end
scheduler.each { |event| puts event }
puts scheduler.busiest_day

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Ruby online