【问题标题】:Python (football games algorithm troubles)Python(足球游戏算法的烦恼)
【发布时间】:2014-02-17 12:56:24
【问题描述】:

我正在尝试为足球小组赛编写算法。 例如:我有 4 个团队在舞台上。

 teams = ['team1', 'team2', 'team3', 'team4']

然后我得到了一个唯一的对

import itertools
team_pairs = list(itertools.combinations(teams, 2))

我的 team_pairs 是团队之间的独特匹配

[('team1', 'team2'), ('team1', 'team3'), ('team1', 'team4'), ('team2', 'team3'), ('team2', 'team4'), ('team3', 'team4')]

现在。我怎样才能创建所有回合? 例如:

  • 第一轮:('team1', 'team2') ('team3', 'team4')
  • 第二轮:('team1', 'team3') ('team2', 'team4')
  • 第二轮:('team1', 'team4') ('team2', 'team3')

以及如何为 6 支球队或 7 支球队做到这一点? 请帮忙!!!

mb 我解释错了:

我有 11 个团队。然后我把它们分成几组。 我有:

  • group1: ['team1', 'team2', 'team3', 'team4']
  • group2: ['team1', 'team2', 'team3', 'team4']
  • group3: ['team1', 'team2', 'team3']

在每个小组中,球队必须与小组中的所有球队一起比赛。 让我们采取 1 组,团队是:

teams = ['team1', 'team2', 'team3', 'team4']

赢 - 3 分 草稿 1 分 松散 - 0分

他们不能同时扮演所有人。 他们玩了3天。

* first day - team1 vs team2 and team3 vs team4
* second day - team1 vs team3 and team2 vs team4
* third day - team1 vs team4 and team2 vs team3

然后我可以总结积分。

但我实际上不明白如何按天划分我的小组(我的 team_pairs)以及哪一天比赛的球队。

【问题讨论】:

  • 请阅读sscce.org,并提供一个代码示例,说明您到目前为止所尝试的内容,显示您遇到的问题、问题所在或您不理解的地方……
  • 您对“回合”的定义非常不清楚。你到底想达到什么目标?你走了多远?
  • 回合是比赛日,因此每支球队在n - 1天的单回合比赛中与其他球队比赛,并且每支球队在每一轮比赛中进行一场比赛。 (后者显然只有在偶数队的情况下才有可能。如果队数为奇数,则应该有一个虚拟队。与虚拟队对战意味着:该队在该轮比赛中没有比赛。)
  • 在链式选择中生成所有排列或调整天数

标签: python algorithm


【解决方案1】:

这个问题可以看作是exact cover 问题,可以像数独一样用Algorithm X 解决,其中有Python implementations 在网络上可用。

需要覆盖的集合包括:

  • 每支球队和每个比赛日的组合
  • 每场比赛配对

四支球队是:

A1, A2, A3, B1, B2, B3, C1, C2, C3, D1, D2, D3, AB, AC, AD, BC, BD, CD

其中B3 表示B 团队在3BD 表示团队B 玩团队D

可用的子集是所有比赛配对加上所有比赛日,对于四支球队来说是:

AB1: A1, B1, AB
AB2: A2, B2, AB
AB3: A3, B3, AB
AC1: A1, C1, AC
...
CD3: C3, D3, CD

解决这个问题会产生大量可能的赛程,基本上是球队和比赛日的排列。选择一个,按比赛日排序并开始比赛。

如果团队数量为奇数,则没有解决方案。添加一个空队作为假人,不要参加其中一方是假人的比赛。

【讨论】:

    猜你喜欢
    • 2010-11-28
    • 2010-10-16
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多