27 lines
892 B
Text
27 lines
892 B
Text
int Deck(10000), Deck0(10000);
|
|
int Cases, Count, Test, Size, I;
|
|
|
|
proc Shuffle; \Do perfect shuffle of Deck0 into Deck
|
|
int DeckLeft, DeckRight;
|
|
int I;
|
|
[DeckLeft:= Deck0;
|
|
DeckRight:= Deck0 + Size*4/2; \4 bytes per integer
|
|
for I:= 0 to Size-1 do
|
|
Deck(I):= if I&1 then DeckRight(I/2)
|
|
else DeckLeft(I/2);
|
|
];
|
|
|
|
[Cases:= [8, 24, 52, 100, 1020, 1024, 10000];
|
|
for Test:= 0 to 7-1 do
|
|
[Size:= Cases(Test);
|
|
for I:= 0 to Size-1 do Deck(I):= I;
|
|
Count:= 0;
|
|
repeat for I:= 0 to Size-1 do Deck0(I):= Deck(I);
|
|
Shuffle;
|
|
Count:= Count+1;
|
|
for I:= 0 to Size-1 do
|
|
if Deck(I) # I then I:= Size;
|
|
until I = Size; \equal starting configuration
|
|
IntOut(0, Size); ChOut(0, 9\tab\); IntOut(0, Count); CrLf(0);
|
|
];
|
|
]
|