我正在寻找创建一个程序,该程序将分配six
团队每天互相比赛一次three
。但我也希望每支球队每天都打two
比赛。我不希望他们在同一three
天内两次扮演同一个人。
我需要对每个游戏进行分组two
和随机化。将同时进行两场比赛。
这是所需的输出:
Day 1: Day 2: Day 3:
Team 1 -> Team 6 | Team 1 -> Team 4 | Team 1 -> Team 2
Team 2 -> Team 5 | Team 2 -> Team 3 | Team 3 -> Team 4
________________ | ________________ | ________________
| |
Team 3 -> Team 1 | Team 3 -> Team 6 | Team 5 -> Team 6
Team 4 -> Team 2 | Team 4 -> Team 5 |
________________ | ________________ |
| |
Team 5 -> Team 4 | Team 5 -> Team 1 |
Team 6 -> Team 3 | Team 6 -> Team 2 |
它不需要完全像这样格式化,但这只是一个一般的想法。
首先,我想让它循环三次,但我想确保它不会分配一个数字,如果该数字已经在这个循环序列中使用过。
我相信代码会是这样的:
Integer[] teams = new Integer[6];
for (int i = 0; i < 6; i++) {
teams[i] = i + 1;
}
for (int i = 0; i < 3; i++) {
Collections.shuffle(Arrays.asList(teams));
System.out.printf("Team 1 -> %s%n", teams[0]);
System.out.printf("Team 2 -> %s%n", teams[1]);
System.out.printf("Team 3 -> %s%n", teams[2]);
System.out.printf("Team 4 -> %s%n", teams[3]);
System.out.printf("Team 5 -> %s%n", teams[4]);
System.out.printf("Team 6 -> %s%n", teams[teams.length - 1]);
System.out.println("____________");
System.out.println();
System.out.println();
}
这是我使用此代码得到的输出。
Day 1
Team 1 -> 6
Team 2 -> 2
Team 3 -> 1
Team 4 -> 5
Team 5 -> 4
Team 6 -> 3
____________
Day 2
Team 1 -> 2
Team 2 -> 4
Team 3 -> 1
Team 4 -> 5
Team 5 -> 3
Team 6 -> 6
这样做的问题是:
- 如果 3 号被分配给 5 号队,那么以后不应将 5 号分配给 3 号。
- 1号不能分配给1号队。
- 如果第 4 队在第 1 天获得编号 5,则不应在第 2 天或第 3 天分配相同的编号。
- 团队名单需要随机分组,并由两人分组。
我不太确定如何解决这些问题。任何帮助,将不胜感激。