Я устраиваю соревнование Кубка мира между несколькими друзьями и решил попрактиковаться в моем 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()
может быть?)
Так что от одного фаната Кубка к другому, помоги мне.