(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