A Alice y Bob les gusta jugar un juego de cartas, con una baraja numerada con enteros consecutivos no negativos.
Sin embargo, Alice tiene una forma muy particular de barajar la baraja. Primero, toma la carta superior del mazo y la coloca en la parte inferior del mazo. Luego ella retira la siguiente carta y comienza un montón con ella. Luego, nuevamente, coloca la carta superior en la parte inferior y coloca la nueva carta superior en la pila. Ella repite este proceso hasta que se vacía el mazo, momento en el que el montón es el nuevo mazo.
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 |
Figura 1: Alice realiza su barajado en el mazo de 5 cartas "3, 1, 4, 0, 2". La parte posterior de las cartas están todas hacia la izquierda.
Un día, Bob anuncia que se tomará una semana de vacaciones. Alice, al no tener a nadie con quien jugar, recluta a su amiga Eve. Ahora, Eve es una tramposa desvergonzada, así que cuando ve el peculiar barajado de Alice, se da cuenta de que puede apilar la baraja de antemano para su ventaja.
Cuando Eve llega a casa después del primer día, hace un análisis del juego y descubre que sus mejores probabilidades son cuando las cartas están en el orden 0, 1, 2, 3, 4, 5, ... No lo hizo. sin embargo, capta cuántas cartas había en el mazo, por lo que trama un esquema descabellado para escribir un código en su brazo que, cuando se ejecuta, toma el tamaño del mazo y muestra el orden en el que Eva debe colocar las cartas, de modo que cuando Alice baraja el mazo, el mazo final está en el orden 0, 1, 2, 3, ...
Realmente no le importa a Eve en qué idioma está el código (ella los conoce a todos), o si el código es una función que toma un argumento entero y devuelve una matriz, o un programa completo que toma información a través de un argumento de línea de comando o STDIN y escribiendo los resultados a STDOUT. Sin embargo, necesita el código lo más breve posible, para minimizar la posibilidad de que Alice lo vea y la atrape.
Por inmoral que pueda ser, ¿pueden ayudar a Eve?
Ejemplo de entradas y salidas:
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)...