21 lines
485 B
Text
21 lines
485 B
Text
link lists
|
|
|
|
procedure main()
|
|
A := [8,24,52,100,1020,1024,10000]
|
|
every len := !A do {
|
|
deck := [: 1 to len :]
|
|
tmpd := copy(deck)
|
|
cnt := 0
|
|
while (cnt +:= 1, tmpd := shuffledeck(tmpd)) do
|
|
if lequiv(deck,tmpd) then break
|
|
write("For deck of size ",len," it takes ",cnt," perfect shuffles.")
|
|
}
|
|
end
|
|
|
|
procedure shuffledeck(d)
|
|
c1 := create !d[1+:*d/2]
|
|
c2 := create !d[*d/2+1:0]
|
|
d := []
|
|
while (put(d,@c1),put(d,@c2))
|
|
return d
|
|
end
|