前書き
今はチェスのトーナメントに参加しています。トーナメントのスケジュールに触発されました。現在、私は他の3人のプレイヤーと競争しています。つまり、4人で3ラウンドをプレイします。スケジュールは次のとおりです。
Round 1: 1-4 3-2
Round 2: 3-4 2-1
Round 3: 1-3 4-2
これは、ラウンドロビンとも呼ばれます。また、これは有効なスケジュールです。以下の条件を満たす場合、スケジュールは有効であると言います。
- すべてのプレーヤーは、別のプレーヤーに対して一度プレイします。
1-2プレイヤー1が白を持っていることを意味します。すべてのプレイヤーはorを(N / 2-0.5)または(N / 2 + 0.5)倍し、Nはラウンド数です。
たとえば、上記の例では、3つのラウンドがあります。つまり、N = 3です。ご覧のように、ラウンド数はプレイヤーの数-1に等しくなります。プレイヤーはどちらかを持っています
- N / 2-0.5 = 1回の白、または
- N / 2 + 0.5 = 2倍の白。
上記の例では:
- プレーヤー
1は白を2回持っています。 - プレーヤー
2は白を1回持っています。 - プレーヤー
3は白を2回持っています。 - プレイヤー
4は白を1回持っています。
タスク
与えられたとしても競争の中でプレイヤーの量、出力トーナメントスケジュールを表す整数> 1。
テストケース:
入力= 4、つまりN = 3
Input: Output:
4 1-4 3-2
3-4 2-1
1-3 4-2
入力= 10、つまりN = 9
Input: Output:
10 1-10 2-9 3-8 4-7 5-6
10-6 7-5 8-4 9-3 1-2
2-10 3-1 4-9 5-8 6-7
10-7 8-6 9-5 1-4 2-3
3-10 4-2 5-1 6-9 7-8
10-8 9-7 1-6 2-5 3-4
4-10 5-3 6-2 7-1 8-9
10-9 1-8 2-7 3-6 4-5
5-10 6-4 7-3 8-2 9-1
入力= 12、つまりN = 11
Input: Output:
12 1-14 2-13 3-12 4-11 5-10 6-9 7-8
14-8 9-7 10-6 11-5 12-4 13-3 1-2
2-14 3-1 4-13 5-12 6-11 7-10 8-9
14-9 10-8 11-7 12-6 13-5 1-4 2-3
3-14 4-2 5-1 6-13 7-12 8-11 9-10
14-10 11-9 12-8 13-7 1-6 2-5 3-4
4-14 5-3 6-2 7-1 8-13 9-12 10-11
14-11 12-10 13-9 1-8 2-7 3-6 4-5
5-14 6-4 7-3 8-2 9-1 10-13 11-12
14-12 13-11 1-10 2-9 3-8 4-7 5-6
6-14 7-5 8-4 9-3 10-2 11-1 12-13
14-13 1-12 2-11 3-10 4-9 5-8 6-7
7-14 8-6 9-5 10-4 11-3 12-2 13-1
もちろん、数字の間に使用した余分な空白はオプションですが、必須ではありません。読み取り可能であれば、好きな形式で出力できます。
注:上記の例は、唯一の有効な出力ではありません。確かにもっと有効な出力があります。
これはcode-golfなので、バイト数が最も少ない送信が優先されます。
2
妥当性は過小評価されていると思います。特に、ラウンド数がプレイヤー数よりも1少ない必要はありませんか?
—
Peter Taylor
@PeterTaylorはい、私はそれを言及するのを忘れていました。質問で編集しました
—
Adnan
プレーヤーには1からNまでの番号を付ける必要がありますか、それとも0からN-1まで番号を付けることができますか?
—
Level River St
@steveverrillあなたに最適なもの。
—
Adnan
あなたは、出力のラウンドを分離するために持っているかであるか
—
randomra
1-4 3-2 3-4 2-1 1-3 4-2のためのn=4有効な出力?