【发布时间】:2011-02-28 22:51:11
【问题描述】:
我正在一些朋友之间设置世界杯挑战赛,并决定练习我的 Ruby 并编写一个小脚本来自动化该过程。
问题:
- 32 场世界杯预选赛按国际足联排名分为 4 个级别
- 8 个条目
- 每个条目每层分配 1 个随机团队
- 赢家通吃 :-)
我写了一些足够的东西,但无疑是蛮力。但是,在我尝试改进我的 Ruby 的过程中,我承认这段代码并不是最优雅的解决方案——所以我求助于你,专家,给我指路。
看看这个要点可能会更清楚 - https://gist.github.com/91e1f1c392bed8074531
我目前的(糟糕的)解决方案:
require 'yaml'
@teams = YAML::load(File.open('teams.yaml'))
@players = %w[Player1 Player2 Player3 Player4 Player5 Player6 Player7 Player8]
results = Hash.new
players = @players.sort_by{rand}
players.each_with_index do |p, i|
results[p] = Array[@teams['teir_one'][i]]
end
second = @players.sort_by{rand}
second.each_with_index do |p, i|
results[p] << @teams['teir_two'][i]
end
third = @players.sort_by{rand}
third.each_with_index do |p, i|
results[p] << @teams['teir_three'][i]
end
fourth = @players.sort_by{rand}
fourth.each_with_index do |p, i|
results[p] << @teams['teir_four'][i]
end
p results
我确信有更好的方法来遍历层,并复制 @players 对象(dup() 或 clone() 可能?)
所以从一个杯迷到另一个,帮帮我。
【问题讨论】:
标签: ruby refactoring loops iteration