مراجعة - دوري رياضي
جزء من قسم البرمجة كائنية التوجه في رحلة Ruby على Coddy. الدرس 31 من 57.
التحدي
صعبأنشئ جدول دوري صغيرًا. تتضمن Team الوحدة Comparable: يكون الفريق أفضل عندما يملك نقاطًا أكثر (3 للفوز، و1 للتعادل)، ثم فارق أهداف أفضل، ثم اسمًا أسبق أبجديًا. تحدّث record(scored, conceded) الفريق، وتُرجع to_s القيمة Reds 7 pts, +3. تتضمن League الوحدة Enumerable: تُنتج each الفرق، وتسجّل play(line) نتيجة مثل Reds 2-1 Blues لكلا الفريقين (مع إنشاء فريق في أول مرة يظهر فيها اسمه)، وتُرجع table الفرق من الأفضل إلى الأسوأ باستخدام sort. تُضمَّن الوحدة Rankable التي تحتوي على leader (أفضل فريق، من max) في League.
يمرّر الكود المُعطى كل سطر إدخال إلى play، ثم يطبع الجدول مع المراكز (1. Reds 7 pts, +3)، والمتصدر، والفرق التي لم تحقق فوزًا في أي مباراة، والتي يتم العثور عليها باستخدام select.
يجب أن تضع كودك في rankable.rb وteam.rb وleague.rb. يحتوي main.rb على كود الإدخال/الإخراج المُعطى ولا يمكن تعديله.
جرّب بنفسك
require_relative 'rankable'
require_relative 'team'
require_relative 'league'
# كود الإدخال/الإخراج المُزوَّد: اتركه كما هو
input = []
while (line = gets)
input << line.chomp
end
league = League.new
input.each { |line| league.play(line) }
league.table.each_with_index { |t, i| puts "#{i + 1}. #{t}" }
puts "leader: #{league.leader&.name}"
winless = league.select { |t| t.wins.zero? }.map(&:name).sort
puts "no wins: #{winless.empty? ? "none" : winless.join(", ")}"
جميع دروس البرمجة كائنية التوجه
1الفئات والكائنات
العمل مع الملفاتتعريف الفئاتمتغيرات النسخةالأساليب و selfto_s و inspectمراجعة - بطاقة المكتبة7تعدد الأشكال والكتابة بأسلوب البطة
تعدد الأشكالالكتابة بأسلوب البطةالأساليب المجردةالحالات والفئاتمراجعة - طرق الدفع3أساليب ومتغيرات الأصناف
أساليب الأصنافمتغيرات كائنات الأصنافالثوابتأساليب الإنشاءمراجعة - رموز القسائمتدرّب بنفسك: مترجم Ruby عبر الإنترنت