Module StepByStep { Function PermutationStep { a=array([]) c1=lambda (&f, a) ->{ =car(a) f=true } m=len(a) c=c1 while m>1 c1=lambda c2=c, p, m=(,) (&f, a) ->{ if len(m)=0 then m=a =cons(car(m),c2(&f, cdr(m))) if f then f=false p++ m=cons(cdr(m), car(m)) if p=len(m) then p=0 m=(,) f=true end if end if } c=c1 m-- end while =lambda c, a (&f) -> { =c(&f, a) } } display(PermutationStep(1,2,3,4)) display(PermutationStep(100,200,300)) display(PermutationStep("A", "B", "C", "D")) display(PermutationStep("DOG", "CAT", "BAT")) sub display(S as lambda) k=false while not k : Print S(&k)#str$(): end while end sub } StepByStep