Powtórzenie — liga sportowa
Część sekcji Programowanie obiektowe ścieżki Ruby w Coddy. Lekcja 31 z 57.
Wyzwanie
TrudnyZbuduj małą tabelę ligową. Team zawiera Comparable: drużyna jest wyżej, gdy ma więcej punktów (3 za zwycięstwo, 1 za remis), następnie lepszy bilans bramek, a na końcu wcześniejszą nazwę w kolejności alfabetycznej. record(scored, conceded) aktualizuje dane drużyny, a to_s zwraca Reds 7 pts, +3. League zawiera Enumerable: each zwraca kolejne drużyny, play(line) zapisuje wynik, na przykład Reds 2-1 Blues, dla obu drużyn (tworząc drużynę przy pierwszym wystąpieniu jej nazwy), a table zwraca drużyny od najlepszej do najsłabszej za pomocą sort. Moduł Rankable z metodą leader (najlepsza drużyna, zwracana przez max) jest dołączony do League.
Dostarczony kod przekazuje każdy wiersz wejściowy do play, a następnie wypisuje tabelę z pozycjami (1. Reds 7 pts, +3), lidera oraz drużyny, które nie wygrały żadnego meczu — znalezione za pomocą select.
Twój kod umieść w plikach rankable.rb, team.rb i league.rb. main.rb zawiera dostarczony kod wejścia/wyjścia i nie można go edytować.
Spróbuj swoich sił
require_relative 'rankable'
require_relative 'team'
require_relative 'league'
# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
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(", ")}"
Wszystkie lekcje w sekcji Programowanie obiektowe
1Klasy i obiekty
Praca z plikamiDefiniowanie klasZmienne instancjiMetody i selfto_s i inspectPowtórzenie – karta biblioteczna4Hermetyzacja
Metody prywatneMetody chronionePrywatne setteryOchrona stanuPowtórzenie – automat vendingowy7Polimorfizm i typowanie kacze
PolimorfizmTypowanie kaczeMetody abstrakcyjnecase i klasyPowtórzenie – metody płatności10Wzorce projektowe, część 2
Delegowanie z ForwardableWzorzec dekoratoraWzorzec budowniczegoWzorzec stanu2Metody dostępowe i self
Gettery i setteryWłasne setteryself w metodachTożsamość i równośćPowtórzenie – lista kontaktów5Dziedziczenie
PodklasyNadpisywanie metodWywoływanie superis_a? i przodkowiePowtórka – lista płac pracowników8Metody specjalne
Równość i hashMetody operatorówIndeksowanie i dodawanieWłasne kolekcjePowtórka – ułamki11Projekt: Zarządzanie biblioteką
Książki i czytelnicyWypożyczanie książek3Metody i zmienne klasowe
Metody klasoweZmienne instancji klasyStałeMetody fabrykującePodsumowanie – kody kuponów6Moduły i mixiny
Moduły i includeRozszerzanie obiektówModuł ComparableModuł EnumerablePowtórzenie — liga sportowaPoćwicz samodzielnie: Kompilator Ruby online