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); ]; ]