我希望生成一个足球比赛的赛程表,包含一系列俱乐部。每场比赛在周日进行,比赛开始时间随机选取,从match_starts_at数组中选择。每个俱乐部每个周日只能参加一场比赛。
例如:
假设有以下这些俱乐部:
结果应该类似于这里看到的内容:http://www.afa.org.ar/index.php?option=com_content&view=article&id=16780%3Afixture-del-torneo-de-primera-division&Itemid=100 俱乐部结构示例:
一个 Fixture 对象需要以下内容才能保存到数据库:
每个俱乐部只应与其他俱乐部比赛一次,所有俱乐部都应该在主场打一场比赛,另一场比赛则在客场进行,等等。每天应该有10场比赛。 我如何创建比赛列表?
这是我目前为止所做的。
例如:
假设有以下这些俱乐部:
Club Atlético All Boys
Asociación Atlética Argentinos Juniors
Arsenal Fútbol Club
Club Atlético Banfield
Club Atlético Belgrano
Club Atlético Boca Juniors
Club Atlético Colón
Club Estudiantes de La Plata
Club Deportivo Godoy Cruz Antonio Tomba
Asociación Mutual Social y Deportiva Atlético de Rafaela
Club Atlético Independiente
Club Atlético Lanús
Club Atlético Newell's Old Boys
Club Olimpo
Racing Club
Club Atlético San Martín
Club Atlético San Lorenzo de Almagro
Club Atlético Tigre
Club Atlético Unión
Club Atlético Vélez Sarsfield
结果应该类似于这里看到的内容:http://www.afa.org.ar/index.php?option=com_content&view=article&id=16780%3Afixture-del-torneo-de-primera-division&Itemid=100 俱乐部结构示例:
=> # Club @id=1 @name="Example Name"
=> # Club @id=2 @name="Example2 Name"
夹具结构示例:
=> # Fixture @id=1 @datetime='2011-11-19 19:12:49' @home_id=1 @away_id=2
一个 Fixture 对象需要以下内容才能保存到数据库:
a home club (:home)
an away club (:away)
and the time of the match (:datetime)
每个俱乐部只应与其他俱乐部比赛一次,所有俱乐部都应该在主场打一场比赛,另一场比赛则在客场进行,等等。每天应该有10场比赛。 我如何创建比赛列表?
这是我目前为止所做的。
competition = Competition.get(1)
clubs = Club.all #20 clubs
@time = Time.now
@count = 0
until @time.sunday? do
@time += (24*60*60) # add 1 day until it's sunday
end
@first_time = @time
@fixture = {1 => []}
clubs.combination(2).each_with_index do |(club1, club2), idx|
Fixture.create(
:home => idx.even? ? club1 : club2,
:away => idx.even? ? club2 : club1,
:datetime => available_fixture_date(club1,club2)
).save
end
def getFecha(club1, club2)
@fixture.keys.each do |fecha|
if (!@fixture[fecha].include?(club1.name) && !@fixture[fecha].include?(club2.name))
@fixture[fecha] << club1.name
@fixture[fecha] << club2.name
@fixture[@fixture.keys.last + 1] = []
return fecha
end
end
end
def available_fixture_date(club1, club2)
fecha = getFecha(club1, club2)
match_starts_at = ['16:00', '17:30', '18:10', '22:00']
match_time = match_starts_at.shuffle.first
@time = @first_time + (24*60*60) * fecha * 7
Time.new(@time.year, @time.month, @time.day, match_time[0,2], match_time[3,2])
end
我的代码返回了超过19个日期,但每个日期应该只有10个匹配项。