مجدول الفعاليات
جزء من قسم البرمجة كائنية التوجه في رحلة Ruby على Coddy. الدرس 56 من 57.
التحدي
صعبأنشئ مجدولًا للأحداث باستخدام الطرق الخاصة في هذا القسم. يحتوي Event.new(title, day, start, finish) على قارئات للقيم الأربع. وهو يضم Comparable ويرتّب حسب اليوم، ثم ساعة البدء، ثم العنوان. يكون حدثان متساويين باستخدام == وeql? وhash عندما يكون لهما العنوان نفسه في اليوم نفسه (أي الحدث نفسه المُدخل مرتين). تُرجع to_s القيمة day 3 09-11 standup، مع ساعات مكوّنة من رقمين. تكون overlaps?(other) صحيحة في اليوم نفسه عندما يبدأ كل حدث قبل انتهاء الآخر. تُرجع Scheduler#add(event) القيمة duplicate لحدث مساوٍ، والقيمة conflicts with review لأول حدث مخزّن (بالترتيب) يتداخل معه، وإلا فتخزّنه وتُرجع added. يتضمن Scheduler الوحدة Enumerable؛ وتُخرج each الأحداث المخزّنة بالترتيب. تُرجع 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
جميع دروس البرمجة كائنية التوجه
1الفئات والكائنات
العمل مع الملفاتتعريف الفئاتمتغيرات النسخةالأساليب و selfto_s و inspectمراجعة - بطاقة المكتبة7تعدد الأشكال والكتابة بأسلوب البطة
تعدد الأشكالالكتابة بأسلوب البطةالأساليب المجردةالحالات والفئاتمراجعة - طرق الدفع3أساليب ومتغيرات الأصناف
أساليب الأصنافمتغيرات كائنات الأصنافالثوابتأساليب الإنشاءمراجعة - رموز القسائمتدرّب بنفسك: مترجم Ruby عبر الإنترنت