- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
哪种方法最适合尝试在 Switch double 循环赛中平均分配对手,即每轮更换伙伴。
例如,在 8 人锦标赛中,您将进行 7 轮比赛,与每位玩家对战 3 或 4 次,并与每位玩家对战一次。当使用“向右轮换”方法时,对局部分是正确的,但对手分布不均。
最佳答案
几年前,一位 friend 要求我提供一个高尔夫锦标赛循环赛的解决方案。你的问题和那个类似。以下是我将如何解决问题:
这是用于实现此方法的代码:
# Given
players = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
from itertools import combinations
from copy import deepcopy
def filterByParties(ptys:list, pairs: list([tuple])) -> list([tuple]):
# return pairs where neither player is in ptys list
return [x for x in pairs if ptys.count(x[0]) == 0 and ptys.count(x[1]) == 0]
# Alternative implementation without using list comprehension
# rslt = []
# ptr = 0
# while ptr < len(pairs):
# pr = pairs[ptr]
# if ptys.count(pr[0]) == 0 and ptys.count(pr[1]) == 0:
# rslt.append(pr)
# ptr += 1
# return rslt
def dropPair(pr:list, pairings: list([tuple])) -> list([tuple]):
# return list of parings minus pr
return [x for x in pairings if pr[0] != x[0] or pr[1] != x[1]]
# Alternative implementation without using list comprehension
# ptr = -1
# for i, pair in enumerate(pairings):
# if pr[0] == pair[0] and pr[1] == pair[1]:
# ptr = i
# break
# if ptr >= 0:
# pairings.pop(ptr)
# return pairings
def doublesTournament(players: list([str])):
# Given list of players, produce a listing for a doubles tennis tournament
# Where the tournament is split into rounds of play in which all players
# play matches with the different participants
tournament_pairings = list(combinations(players, 2))
tournament_rounds = len(players) -1
matches_per_round = len(players)//4
tournament_schedule = []
for rnd in range(tournament_rounds):
rnd_play_list = []
# Make true copy of parinings for assigning match play
match_pairings = deepcopy(tournament_pairings)
while match_pairings:
team_one = match_pairings.pop()
match_pairings = filterByParties(team_one, match_pairings)
tournament_pairings = dropPair(team_one, tournament_pairings)
team_two = match_pairings.pop()
match_pairings = filterByParties(team_two, match_pairings)
tournament_pairings = dropPair(team_two, tournament_pairings)
rnd_play_list.append((team_one, team_two))
tournament_schedule.append(rnd_play_list)
for r, round_play in enumerate(tournament_schedule):
print(f'Round {r+1}')
for m, match_play in enumerate(round_play):
print(f'\tMatch {m+1}: {match_play[0]} vs {match_play[1]}')
doublesTournament(players)
产量:
Round 1
Match 1: ('G', 'H') vs ('E', 'F')
Match 2: ('C', 'D') vs ('A', 'B')
Round 2
Match 1: ('F', 'H') vs ('E', 'G')
Match 2: ('B', 'D') vs ('A', 'C')
Round 3
Match 1: ('F', 'G') vs ('E', 'H')
Match 2: ('B', 'C') vs ('A', 'D')
Round 4
Match 1: ('D', 'H') vs ('C', 'G')
Match 2: ('B', 'F') vs ('A', 'E')
Round 5
Match 1: ('D', 'G') vs ('C', 'H')
Match 2: ('B', 'E') vs ('A', 'F')
Round 6
Match 1: ('D', 'F') vs ('C', 'E')
Match 2: ('B', 'H') vs ('A', 'G')
Round 7
Match 1: ('D', 'E') vs ('C', 'F')
Match 2: ('B', 'G') vs ('A', 'H')
关于python - 在 "Switch Doubles Round Robin Tournament"平分对手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70055258/
给定多个 (x,y) 有序对,我想比较它们之间的距离。所以假装我有一个有序对列表: pairs = [a,b,c,d,e,f] 我有一个函数,它接受两个有序对并找出它们之间的距离: def dista
我正在处理一个场景,我在 Redis 发布/订阅实现中有多个订阅者,但我不想向所有订阅者广播消息,而是想将特定消息传递给单个订阅者,以便每个订阅者都有唯一的消息跟他们。在这种情况下,Round-Rob
我正在寻求一些关于如何最好地配置我的 rabbitMQ 交换的建议。 我正在尝试在循环方法中使用主题交换。每个消费者都有自己(唯一)命名的队列附加到主题交换。我希望交换器将循环消息循环发送到“相同”主
我一直在试图像疯了一样弄清楚如何做到这一点的VCL和我开始认为这是不可能的。我有几个后端应用程序服务器,可以服务各种不同的主机。我需要使用 Varnish 来缓存任何主机的页面,并将缺少缓存的请求发送
等待时间定义为每个进程在获得时间片之前必须等待的时间。在 Shorted Job First 和 First Come First Serve 等调度算法中,我们可以很容易地发现等待时间,当我们只是将
我有一个字典列表,我想对其进行循环排序。 sample = [ {'source': 'G', '"serial"': '0'}, {'source': 'G', '"serial"'
我有这个 Play 应用程序,它连接到远程服务器以使用给定的 API。为了平衡我对远程服务器的请求,我将多个帐户连接到同一台服务器。每个帐户都可以查询 API 给定的次数。每个帐户都由一个 Akka
看起来这应该是一项简单的任务,但我不知道如何使用 LINQ 来做到这一点。到目前为止,我能找到的唯一信息是关于循环赛制的,这不是我想要的。我可能搜索错了。鉴于以下列表: var items [] {
在基于优先级的循环算法中,当在处理较低优先级的进程(P2)时到达较高优先级的进程(例如P1)时,必须抢占P2并改为处理P1。正确的? 然后,如果在特定时间段(例如10ms)之后 是否继续处理P1? (
我希望在一个非常简单的 HTTP Web 服务器上用 Java 实现“Round Robin”负载平衡。 在这种情况下,循环意味着每个端口一个 HTTP 请求。 假设我有一个网络服务器为 3 个不同的
我有一堆 URL 存储在一个表中,等待脚本抓取。但是,其中许多 URL 都来自同一站点。我想以“站点友好”的顺序返回这些 URL(即,尽量避免连续使用来自同一站点的两个 URL),这样我就不会在短时间
我正在为 C 中的 Round Robin 调度算法制作一个模拟器。现在我做的时间片是 2。所以每 2 秒它从列表的前面开始一个“进程”,减少它的剩余时间2,然后将其粘贴到列表的末尾并获取下一个。此外
我有这个设置并且效果很好: $('#PhoneNumber').inputmask({ mask: "89999999999", placeholder: "" }); 它允许输入以“8”开头的电话号
我面临的问题是以何种方式如果出现如下示例的问题: 代码 1000、2000、3000、4000、5000 编号 1、2、3 ======================================
我正试图让循环调度程序正常工作,但不幸的是,尽管流下了血泪,它似乎仍然在我的代码中的某个地方出现错误。这是我的功能: //function that processes the head of the
#include #include #include #include #define NUM_THREADS 4 #define COUNT_LIMIT 13 int done =
我正在尝试使用 GNU Parallel 来帮助我处理一些我不想在本地保存的远程文件。 我的命令看起来有点像这样: python list_files.py | \ parallel -j5 'a
我正在尝试使用 GNU Parallel 来帮助我处理一些我不想在本地保存的远程文件。 我的命令看起来有点像这样: python list_files.py | \ parallel -j5 'a
我正在使用Robin Herbot's inputmask jquery plugin ,我得到了预期的输出,但我希望它带有逗号,即 12,345.67 和 2 位小数。 $('#currency')
我有一个表,其中包含 3 个字段: ID 姓名 状态 每次我得到结果时,它应该给我 5 个状态 = 1 的名字。假设数据库包含以下内容: id name status 1 A 1 2 B
我是一名优秀的程序员,十分优秀!