关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。
7天前关门了。
改进这个问题
我想不出解决办法,所以我想寻求帮助。我有一张名单:
var listNames = ['John', 'William', 'James', 'George', 'Charles',
'Frank', 'Joseph', 'Henry', 'Robert', 'Thomas',
'Edward', 'Harry', 'Walter', 'Arthur'];
我想通过点击一个按钮在它们之间生成一些随机耦合,而不重复已经耦合的名称。例子:
约翰-詹姆斯,威廉-乔治,查尔斯-约瑟夫,弗兰克-亨利,罗伯特-爱德华,托马斯-哈里,沃尔特-亚瑟
在生成这个列表之后,我想生成n次其他列表,直到所有的名字都匹配在一起。我想做的一个例子是在这个网站上:https://www.blia.it/utili/campionato/ . 通过在列中添加名称,它将生成团队相互配对的日历,并且不会重复相同的配对超过2次。
如何在javascript和java中实现这一点?谢谢任何能帮助我的人。
2条答案
按热度按时间e5nszbig1#
为了生成不重复的配对,可以使用随机索引,将元素从数组中弹出,这样它们就不会重复。
对于问题的第二部分,我将为每个配对创建一个带有密钥条目的对象,并在每次绘制之后检查密钥是否不存在。
这是问题的蓝图。https://codesandbox.io/s/heuristic-grothendieck-vkt6f?file=/src/index.js
db2dz4w82#
我不懂数学,但实验表明,只有4、8、16、32个团队等能给出可能的解决方案。
根据您的评论,此编辑允许连续主客场比赛。我没有具体尝试,但这种尝试似乎已经产生了一个相当公平的解决方案。
如果你在下半个赛季重复这个解决方案,并且切换每一个配对,每一支球队将会得到完全相同的主客场比赛数量。
8组输出: