チャレンジ
最短のコードで:
- 任意のサイズのカードのデッキ上に完全シャッフルの順列サイクルの長さを計算し、N(N ≥2及びnは偶数です)。
- 出力2≤のためのすべてのサイクルの長さのテーブルN ≤1000(nは偶数)。
完璧なシャッフルを定義するには、2つの基本的な方法があることに注意してください。あり、アウトシャッフル上に最初のカードと下部に最後のカードを保持し、かつそこにある中、シャッフル中央に向かって、最初と最後のカード1点の位置を移動し、。シャッフルするかシャッフルするかを選択できます。アルゴリズムは2つの間でほとんど同じです。
- 10カードデッキのシャッフル:[1,2,3,4,5,6,7,8,9,10]↦[1,6,2,7,3,8,4,9,5、 10]。
- 10カードデッキのシャッフル:[1,2,3,4,5,6,7,8,9,10]↦[6,1,7,2,8,3,9,4,10、 5]。
グラフィカルな例
ここでは、20カードデッキのアウトシャッフルのサイクル長が18ステップであることがわかります。(これは説明のみを目的としています。サイクルをグラフィカルに出力するためのソリューションは必要ありません。)一方、クラシック52カードデッキは、8段のアウトシャッフルサイクル長しかありません(図には示されていません)。
インシャッフル 20枚のカードデッキには、6つのステップのサイクル長を有しています。
出力の表形式の例
プログラムはこれに似たものを出力するはずですが、好きな表形式を選択することもできます。これはアウトシャッフル用です:
2 1
4 2
6 4
8 3
10 6
12 10
14 12
16 4
18 8
20 18
22 6
24 11
26 20
28 18
30 28
32 5
34 10
36 12
38 36
40 12
...many lines omitted...
1000 36
ご質問
- nが2の累乗である場合、数値入力nとそのサイクルカウントの間に何らかの関係があるように見えますか?
- nが2の累乗でない場合はどうでしょうか?
- 奇妙なことに、1000枚のカードデッキのアウトシャッフルサイクルカウントは36のみですが、500枚のカードデッキのアウトシャッフルサイクルカウントは166です。なぜでしょうか。
- サイクルカウントcがnよりも大幅に小さい、つまり比率n / cが最大になる、あなたが見つけることができる最大の数は何ですか?