Menu
Coddy logo textTech

Veranstaltungsplaner

Teil des Abschnitts Objektorientierte Programmierung der Ruby-Journey von Coddy. Lektion 56 von 57.

challenge icon

Aufgabe

Schwer

Erstelle mit den speziellen Methoden dieses Abschnitts einen Ereignisplaner. Event.new(title, day, start, finish) verfügt über Zugriffsmethoden für alle vier Werte. Die Klasse bindet Comparable ein und sortiert nach Tag, dann Startstunde und dann Titel. Zwei Ereignisse sind mit ==, eql? und hash gleich, wenn sie am selben Tag denselben Titel haben (dasselbe Ereignis wurde zweimal eingegeben). to_s gibt day 3 09-11 standup mit zweistelligen Stunden zurück. overlaps?(other) ist am selben Tag wahr, wenn jedes Ereignis vor dem Ende des jeweils anderen beginnt. Scheduler#add(event) gibt duplicate für ein gleiches Ereignis zurück, conflicts with review für das erste gespeicherte Ereignis (in der Reihenfolge), das sich überschneidet, und speichert es andernfalls und gibt added zurück. Scheduler bindet Enumerable ein; sein each liefert die gespeicherten Ereignisse in der Reihenfolge. busiest_day gibt busiest day 3: 5h zurück, also den Tag mit den meisten geplanten Stunden (bei Gleichstand den früheren Tag), oder no events.

Der bereitgestellte Code liest Ereignisse als Zeilen im Format title,day,start,finish ein und gibt für jedes Ereignis die Antwort aus, anschließend jedes Ereignis in der Reihenfolge über each sowie den Tag mit den meisten Ereignissen.

Dein Code gehört in event.rb und scheduler.rb. main.rb enthält den bereitgestellten Eingabe-/Ausgabecode und darf nicht bearbeitet werden.

Probier es selbst

require_relative 'event'
require_relative 'scheduler'

# Gelieferter Ein-/Ausgabe-Code: belasse ihn wie er ist
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

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-Ruby-Compiler