アリスとボブは、連続する非負の整数で番号が付けられたカードのデッキで、カードゲームをするのが好きです。
しかし、アリスにはデッキをシャッフルする非常に特別な方法があります。まず、彼女はデッキから一番上のカードを取り、デッキの一番下に置きます。それから彼女は次のカードを取り除き、それで山を始めます。その後、彼女は再び一番上のカードを一番下に循環させ、新しい一番上のカードを山に置きます。彼女はデッキを空にするまでこのプロセスを繰り返し、その時点でパイルが新しいデッキになります。
deck | pile
-----------+-----------
3 1 4 0 2 |
1 4 0 2 3 |
4 0 2 3 | 1
0 2 3 4 | 1
2 3 4 | 0 1
3 4 2 | 0 1
4 2 | 3 0 1
2 4 | 3 0 1
4 | 2 3 0 1
| 4 2 3 0 1
4 2 3 0 1 |
図1:アリスは5カードデッキ「3、1、4、0、2」でシャッフルを実行します。カードの裏面はすべて左を向いています。
ある日、ボブは、1週間の休暇を取ることを発表します。アリスは、ゲームをプレイする人がいないため、友人のイブに参加します。今、イブは恥知らずな詐欺師であるため、アリスの独特のシャッフルを見ると、彼女は事前にデッキを有利に積み重ねることができることに気付きます!
イブが最初の日を終えて家に帰ると、彼女はゲームについていくつかの分析を行い、カードが0、1、2、3、4、5の順序にあるときが一番のオッズであることを理解します。しかし、デッキに何枚のカードがあったかを把握し、彼女は腕にいくつかのコードを書くために頭を悩ますスキームをhatch化させます。アリスはデッキをシャッフルします。最後のデッキは0、1、2、3、...の順序です。
Eveはコードがどの言語であるか(彼女はそれらをすべて知っています)、コードが整数引数を取り配列を返す関数か、コマンドライン引数またはSTDINを介して入力を受け取る完全なプログラムであるかは、実際には関係ありません結果をSTDOUTに書き込みます。しかし、アリスがそれを見てキャッチする可能性を最小限に抑えるために、彼女はできるだけ短いコードを必要とします。
不道徳かもしれませんが、皆さんはイブを助けることができますか?
入力と出力の例:
in out
1 0
2 0 1
5 2 4 0 3 1
10 2 9 4 8 0 7 3 6 1 5
52 6 51 25 50 12 49 24 48 1 47 23 46 11 45 22 44 5 43 21 42 10 41 20 40 2 39 19
38 9 37 18 36 4 35 17 34 8 33 16 32 0 31 15 30 7 29 14 28 3 27 13 26
shuffle(shuffle(range(5))) == range(5)
...