首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >足球游戏算法故障

足球游戏算法故障
EN

Stack Overflow用户
提问于 2014-01-26 19:25:55
回答 1查看 2.3K关注 0票数 3

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

代码语言:javascript
复制
 teams = ['team1', 'team2', 'team3', 'team4']

然后我得到了一个独一无二的配对

代码语言:javascript
复制
import itertools
team_pairs = list(itertools.combinations(teams, 2))

我的team_pairs是各队之间唯一的比赛

代码语言:javascript
复制
[('team1', 'team2'), ('team1', 'team3'), ('team1', 'team4'), ('team2', 'team3'), ('team2', 'team4'), ('team3', 'team4')]

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

  • round1:('team1', 'team2') ('team3', 'team4')
  • round2:('team1', 'team3') ('team2', 'team4')
  • round2:('team1', 'team4') ('team2', 'team3')

对于6支球队还是7支球队,如何做到这一点?救命啊!

我解释得不好:

我有11支队伍。然后我把他们分成几个小组。我有:

  • group1:‘team4 1’,‘team4 2’,‘team4 3’,'team4‘
  • group2:‘team4 1’,‘team4 2’,‘team4 3’,'team4‘
  • group3:‘team2 1’,‘team2 2’,'team3‘

在每一组中,团队必须与小组中的所有球队一起比赛。让我们参加一个小组,小组如下:

代码语言:javascript
复制
teams = ['team1', 'team2', 'team3', 'team4']

胜利-3分选秀1分松散-0分

他们不能同时让每个人都上场。他们玩了三天。

代码语言:javascript
复制
* 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)分成几天,以及哪一队在哪一天比赛。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-26 22:01:58

这个问题可以被看作是一个精确覆盖问题,并且可以像一个带有算法X的Sudoku一样得到解决,其中Python实现在网络上是可用的。

这套需要涵盖的内容包括:

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

四个队的情况是:

代码语言:javascript
复制
A1, A2, A3, B1, B2, B3, C1, C2, C3, D1, D2, D3, AB, AC, AD, BC, BD, CD

B3的意思是B队在白天打球,3BD的意思是B队打D队。

可用的子集都是与所有比赛日相结合的配对,对四个队来说是:

代码语言:javascript
复制
AB1: A1, B1, AB
AB2: A2, B2, AB
AB3: A3, B3, AB
AC1: A1, C1, AC
...
CD3: C3, D3, CD

解决这个问题会产生许多可能的安排,本质上是团队和比赛日的排列。选一个,按比赛日点菜,然后比赛。

如果有一个奇数的团队,就没有解决办法。添加一个空队作为假人,不要在其中一方是假人的情况下进行比赛。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21368113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档