22 lines
450 B
Haskell
22 lines
450 B
Haskell
procedure main()
|
|
every n := 1 to 10 do {
|
|
ts := 0
|
|
every (ts := 0) <:= swop(permute([: 1 to n :]))
|
|
write(right(n, 3),": ",right(ts,4))
|
|
}
|
|
end
|
|
|
|
procedure swop(A)
|
|
count := 0
|
|
while A[1] ~= 1 do {
|
|
A := reverse(A[1+:A[1]]) ||| A[(A[1]+1):0]
|
|
count +:= 1
|
|
}
|
|
return count
|
|
end
|
|
|
|
procedure permute(A)
|
|
if *A <= 1 then return A
|
|
suspend [(A[1]<->A[i := 1 to *A])] ||| permute(A[2:0])
|
|
end
|