当前位置: 首页 > 面试题库 >

Python中的联赛夹具生成器

田修为
2023-03-14
问题内容

我想用python写一个League Fixture生成器,但是我做不到。详细信息如下:

有动态的团队列表,例如teams = ["Team1", "Team2", "Team3", "Team4"]。如何从团队列表中生成一个fix_weekx列表?例如:

fixture_week1 = ["Team1", "Team2", "Team3", "Team4"]
fixture_week2 = ["Team1", "Team3", "Team2", "Team4"]
fixture_week2 = ["Team1", "Team4", "Team2", "Team3"]

#Return matches:
fixture_week1 = ["Team2", "Team1", "Team4", "Team3"]
fixture_week2 = ["Team3", "Team1", "Team4", "Team2"]
fixture_week2 = ["Team4", "Team1", "Team3", "Team2"]

任何想法?


问题答案:

夹具调度是一个众所周知的问题。这是算法的python实现,网址为:http : //en.wikipedia.org/wiki/Round-
robin_tournament

# generation code - for cut and paste

import operator
def fixtures(teams):
    if len(teams) % 2:
        teams.append('Day off')  # if team number is odd - use 'day off' as fake team

    rotation = list(teams)       # copy the list

    fixtures = []
    for i in range(0, len(teams)-1):
        fixtures.append(rotation)
        rotation = [rotation[0]] + [rotation[-1]] + rotation[1:-1]

    return fixtures

# demo code
teams = ["Team1", "Team2", "Team3", "Team4", "Team5"]

# for one match each - use this block only
matches = fixtures(teams)
for f in matches:    
    print zip(*[iter(f)]*2)

# if you want return matches 
reverse_teams =  [list(x) for x in zip(teams[1::2], teams[::2])]
reverse_teams = reduce(operator.add,  reverse_teams)    # swap team1 with team2, and so on ....

#then run the fixtures again
matches = fixtures(reverse_teams)

print "return matches"
for f in matches:    
    print f

生成输出:

[('Team1', 'Day off'), ('Team2', 'Team5'), ('Team3', 'Team4')]
[('Team1', 'Team5'), ('Day off', 'Team4'), ('Team2', 'Team3')]
[('Team1', 'Team4'), ('Team5', 'Team3'), ('Day off', 'Team2')]
[('Team1', 'Team3'), ('Team4', 'Team2'), ('Team5', 'Day off')]
[('Team1', 'Team2'), ('Team3', 'Day off'), ('Team4', 'Team5')]


 类似资料:
  • 对不起,这个问题可能很愚蠢,但我无法通过谷歌搜索找到答案。 我的问题是:我创建了文件TaskCest。在backend\acceptance下的php,在该文件中有以下声明 我有一个fixture类,数据在data目录中。 但当我运行脚本时,会出现以下错误: 错误很明显,但我无法理解,在文件yii2\test\FixtureTrait中。php:145我有一个函数,它希望name参数是字符串,但对

  • 问题内容: 我目前正在阅读Python,目前正在研究生成器。我发现很难回头。 从Java的背景出发,是否有Java的等效语言?这本书讲的是“生产者/消费者”,但是当我听说线程的时候。 什么是发电机,为什么要使用它?显然,无需引用任何书籍(除非您可以直接从书籍中找到一个体面,简单的答案)。也许举一些例子,如果您感到慷慨! 问题答案: 注意:本文采用Python 3.x语法。† 一个发电机仅仅是它返回

  • 我正在尝试将一个网站从Heroku迁移到AWS,但在代码构建方面遇到了麻烦。源代码在GitHub上,我使用的是CodePipeline-CodeBuild-Elastic Beanstalk。管道运行良好,代码似乎正在向Elastic Beanstalk过渡。然而,我被困在代码构建步骤。(buildspec.yml如下所示) 日志似乎可以很好地运行命令,但是当我将构建输出到S3存储桶时,没有构建文

  • Bootstrap 在 CSS 方面采用 Grunt,用 JavaScript 构建系统,用 Jekyll 做记录。Gruntfile 在使用框架方面有许多便利的特点,包括编译代码、运行测试等等。 工具安装 为了使用Gruntfile以及本地运行我们的文档,你需要拷贝一份Bootstrap的源文件,还有Node.js以及Grunt。参照下面的步骤,你应该已经准备好开始动手了: 下载并安装 Node

  • 问题内容: 有人可以告诉我这段代码在做什么吗?无论如何,它只是打印“计数”。我只想要一个非常简单的素数生成器(没什么花哨的)。 问题答案: 有一些问题: 当计数不除以x时,为什么要打印计数?这并不意味着它是素数,仅意味着该特定x不会将其除 移至下一个循环迭代-但你确实想使用停止它 这是你的代码,其中包含一些修复程序,它仅输出质数: 有关更有效的质子生成,请参见其他人的建议,参见戊二烯筛。这是一个不

  • 问题内容: 我目前正在浏览Go,并且认为goroutines的用法类似于Python生成器,尤其是Question 66 。我以为66看起来很复杂,因此我将其改写为: 这似乎有效。几个问题: 如果我将通道上的缓冲区大小设置为10,则将尽快填充另外10个点,并且会尽快耗尽这些点。这是正确的吗?这会比内存大小为1的缓冲区更好,但是会占用内存,对吗? 由于通道不会被发送方关闭,因此当我们超出范围时在内存