Je suis en train de mettre en place un Défi de Coupe du Monde entre amis et j'ai décidé de pratiquer mon Rubis et d'écrire un petit script pour automatiser le processus.Aidez-moi à refactoriser mon Défi de Coupe du Monde Script
Le problème:
- 32 éliminatoires de la Coupe du monde divisé en 4 niveaux par leur classement de la FIFA
- 8 entrées
- Chaque entrée est affecté 1 équipe au hasard par niveau
- Winner takes all :-)
J'ai écrit quelque chose qui me suffit pourtant Force brute. Mais, dans ma tentative d'améliorer mon Ruby, je reconnais que ce code n'est pas la solution la plus élégante autour de - Alors je me tourne vers vous, les experts, pour me montrer le chemin.
Il peut être plus clair pour vérifier ce point essentiel - https://gist.github.com/91e1f1c392bed8074531
Ma solution actuelle (faible):
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
Je suis sûr qu'il ya une meilleure façon de parcourir les niveaux, et en dupliquant l'objet @players (dup()
ou clone()
peut-être?)
Alors d'un Ventilateur de Coupe à l'autre, aidez-moi.