Menu
Coddy logo textTech

Riepilogo - Lega sportiva

Fa parte della sezione Programmazione orientata agli oggetti del percorso Ruby di Coddy. Lezione 31 di 57.

challenge icon

Sfida

Difficile

Crea una piccola classifica di lega. Team include Comparable: una squadra è maggiore quando ha più punti (3 per una vittoria, 1 per un pareggio), poi una migliore differenza reti e infine un nome alfabeticamente precedente. record(scored, conceded) aggiorna la squadra e to_s restituisce Reds 7 pts, +3. League include Enumerable: each restituisce le squadre, play(line) registra il risultato, ad esempio Reds 2-1 Blues, per entrambe le squadre (creando una squadra la prima volta che compare il suo nome) e table restituisce le squadre dalla migliore alla peggiore usando sort. Il modulo Rankable, con leader (la squadra migliore, ottenuta con max), è incluso in League.

Il codice fornito passa ogni riga di input a play, poi stampa la classifica con le posizioni (1. Reds 7 pts, +3), la capolista e le squadre senza vittorie in nessuna partita, individuate con select.

Il tuo codice va inserito in rankable.rb, team.rb e league.rb. main.rb contiene il codice di input/output fornito e non può essere modificato.

Provalo tu

require_relative 'rankable'
require_relative 'team'
require_relative 'league'

# Código de entrada/salida proporcionado: mantenlo tal como está
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(", ")}"

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Ruby online