我的 JavaScript 代码中有一个数学问题。我需要将给定数量的玩家随机分成 2 支球队,这样每次 - 如果球员想再次比赛 - 球队会再次组成,他们应该是不同的,直到所有组合都形成。
假设我有 4 个玩家,那么所有的组合如下:
[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]
不过,因为队伍方不算,所以只有3种不同的组合:
[1,2] vs [3,4]
[1,3] vs [2,4]
[1,4] vs [2,3]
当玩的游戏数超过组合数时,应该重新开始......即随机选择三个组合中的一个,随机选择下一个等等......
但是有一个转折点……当玩家数量为奇数时,我的数学技能会变得相当困难,其中一个玩家需要休息一场。因此,对于 5 名球员,所有比赛组合都是(最后一个数字是球员休息):
[1,2] vs [3,4] [5]
[1,2] vs [3,5] [4]
[1,2] vs [4,5] [3]
[1,3] vs [2,4] [5]
[1,3] vs [2,5] [4]
[1,3] vs [4,5] [2]
[1,4] vs [2,3] [5]
[1,4] vs [2,5] [3]
[1,4] vs [3,5] [2]
[1,5] vs [2,3] [4]
[1,5] vs [2,4] [3]
[1,5] vs [3,4] [2]
[2,3] vs [4,5] [1]
[2,4] vs [3,5] [1]
[2,5] vs [3,4] [1]
在 JavaScript 中如何组建这些团队?
想到的一件事是给每个玩家一个唯一的值(10 ^ x),例如:
player1.value = 10;
player2.value = 100;
player3.value = 1000;
player4.value = 10000;
...然后当循环形成团队时,检查团队的总价值是否等于最后一个值。
有人可以在数学/ JavaScriptly 上更有才华,请帮助我解决这个编码问题。谢谢!