six
チームを毎日 1 回対戦するように割り当てるプログラムを作成しようとしていますthree
。でも、各チームにはtwo
毎日試合をしてもらいたいです。同じ期間に同じ人物を 2 回プレイしてほしくありませんthree
。
各ゲームをグループ化しtwo
てランダム化する必要があります。一度に2つのゲームがプレイされます。
目的の出力は次のとおりです。
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 |
このように正確にフォーマットする必要はありませんが、これは単なる一般的な考え方です。
まず、3回ループするようにしたいのですが、この一連のループで既に番号が使用されている場合は、その番号を割り当てないようにしたいと考えています。
コードは次のようになると思います。
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 日目に同じ番号が割り当てられるべきではありません。
-チームのリストは、ランダム化して 2 つにグループ化する必要があります。
これらの問題を解決する方法がよくわかりません。どんな助けでも大歓迎です。