Menu
Coddy logo textTech

Tekrar - Spor Ligi

Coddy'nin Ruby Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 31 / 57.

challenge icon

Görev

Zor

Küçük bir lig tablosu oluşturun. Team, Comparable içerir: bir takım daha fazla puana (galibiyet için 3, beraberlik için 1), ardından daha iyi averaja, ardından alfabetik olarak daha önce gelen bir isme sahipse daha üstündür. record(scored, conceded) takımı günceller ve to_s Reds 7 pts, +3 döndürür. League, Enumerable içerir: each takımları verir, play(line) Reds 2-1 Blues gibi bir sonucu her iki takım için kaydeder (adı ilk kez göründüğünde takımı oluşturur) ve table takımları sort kullanarak en iyiden en kötüye döndürür. leader ( max ile elde edilen en iyi takım) içeren Rankable modülü League içinde kullanılır.

Sağlanan kod, her girdi satırını play'e geçirir, ardından tabloyu sıralarıyla birlikte (1. Reds 7 pts, +3), lideri ve herhangi bir maçta galibiyet alamayan, select ile bulunan takımları yazdırır.

Kodunuz rankable.rb, team.rb ve league.rb dosyalarına gider. main.rb sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.

Kendin dene

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

# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
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(", ")}"

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Ruby derleyicisi