이벤트 일정 관리
Coddy Ruby 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 57개 중 56번째.
챌린지
어려움이 섹션의 특수 메서드를 사용하여 이벤트 스케줄러를 만드세요. Event.new(title, day, start, finish)에는 네 인자 모두에 대한 리더가 있습니다. Comparable을 포함하며, 일, 시작 시간, 제목 순서로 정렬됩니다. 같은 날에 같은 제목을 가진 두 이벤트(동일한 이벤트가 두 번 입력된 경우)는 ==, eql?, hash에서 서로 같습니다. to_s는 시간을 두 자리로 표시하여 day 3 09-11 standup을 반환합니다. overlaps?(other)는 같은 날이고 각 이벤트의 시작 시간이 상대 이벤트의 종료 시간보다 빠를 때 true입니다. Scheduler#add(event)는 같은 이벤트이면 duplicate를 반환하고, 겹치는 저장된 이벤트 중 순서상 첫 번째 이벤트가 있으면 conflicts with review를 반환하며, 그렇지 않으면 이벤트를 저장하고 added를 반환합니다. Scheduler는 Enumerable을 포함하며, 해당 객체의 each는 저장된 이벤트를 순서대로 yield합니다. busiest_day는 예약된 시간이 가장 많은 날(동률이면 더 이른 날)인 경우 busiest day 3: 5h를 반환하고, 이벤트가 없으면 no events를 반환합니다.
제공된 코드는 이벤트를 title,day,start,finish 형식의 줄로 읽고 각 이벤트에 대한 응답을 출력한 다음, each를 통해 모든 이벤트를 순서대로 출력하고 가장 바쁜 날을 출력합니다.
코드는 event.rb와 scheduler.rb에 작성하세요. main.rb에는 제공된 입력/출력 코드가 들어 있으며 수정할 수 없습니다.
직접 해보기
require_relative 'event'
require_relative 'scheduler'
# 제공된 입력/출력 코드: 그대로 유지하세요
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
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 Ruby 컴파일러