RosettaCodeData/Task/Perfect-shuffle/Icon/perfect-shuffle.icon
2026-04-30 12:34:36 -04:00

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