(phixonline)-->
with javascript_semantics
function perfect_shuffle(sequence deck)
integer l = length(deck), mp = l/2, k = 1
sequence res = repeat(0,l)
for i=1 to mp do
res[k] = deck[i] k += 1
res[k] = deck[i+mp] k += 1
end for
return res
end function
constant testsizes = {8, 24, 52, 100, 1020, 1024, 10000}
for i=1 to length(testsizes) do
sequence deck = tagset(testsizes[i])
sequence work = perfect_shuffle(deck)
integer count = 1
while work!=deck do
work = perfect_shuffle(work)
count += 1
end while
printf(1,"%5d cards: %4d\n", {testsizes[i],count})
end for