0
我在一些朋友之間建立了一場世界盃挑戰賽,並決定練習我的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()
也許?)
所以從一個杯子到另一個杯子,幫助我。