Alice ve Bob, ardışık negatif olmayan tamsayılarla numaralandırılmış bir deste desteyle bir kart oyunu oynamayı severler.
Yine de Alice'in güverteyi karıştırmanın çok özel bir yolu var. İlk olarak, üst kartı desteden alır ve destenin altına koyar. Sonra bir sonraki kartı çıkarır ve onunla bir yığın başlatır. Ardından, yine üst kartı alta çevirir ve yeni üst kartı yığına koyar. Desteyi boşaltıncaya kadar bu işlemi tekrarlar, bu noktada kazık yeni güverte olur.
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 |
Şekil 1: Alice, karmasını 5 kartlı "3, 1, 4, 0, 2" destesinde yapıyor. Kartların arkaları sola bakacak şekilde.
Bir gün, Bob bir haftalık tatile çıktığını duyurur. Oyunu oynayacak kimsesi olmayan Alice, arkadaşı Havva'yı ister. Eve, utanmaz bir aldatmacadır, bu yüzden Alice'in tuhaf karışıklığını gördüğünde, güverteyi önceden kendi yararına istifleyebileceğini fark eder!
Eve ilk günden sonra eve döndüğünde, oyunda biraz analiz yapar ve en iyi oranlarının kartların 0, 1, 2, 3, 4, 5, ... sıralamasında olduğunu anlar ... Bununla birlikte, destede kaç kart olduğunu yakalayın, bu yüzden koluna, çalıştırıldığında destenin boyutunu alan ve Havva'nın kartları koyması gereken sırayı görüntüleyen bir kod yazmak için hararetli bir plan çıkarır. Alice güverteyi karıştırır, son güverte 0, 1, 2, 3, ...
Eve, kodun hangi dilde olduğunu (hepsini biliyor) ya da kodun bir tamsayı argümanı alan ve bir dizi döndüren bir işlev mi yoksa bir komut satırı argümanı veya STDIN aracılığıyla girdi alan bir program mı olduğu önemli değildir. ve sonuçları STDOUT'a yazmak. Bununla birlikte, Alice'in kodu görme ve yakalama şansını en aza indirgemek için koda mümkün olduğunca kısa sürede ihtiyacı var.
Ahlaksız olduğu gibi, Havva'ya yardım edebilir misiniz?
Örnek giriş ve çıkışlar:
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)