Module StepByStep { Function CombinationsStep (a, nn) { c1=lambda (&f, &a) ->{ =car(a) : a=cdr(a) : f=len(a)=0 } m=len(a) c=c1 n=m-nn+1 p=2 While m>n c1=lambda c2=c,n=p, z=(,) (&f, &m) ->{ if len(z)=0 then z=cdr(m) =cons(car(m),c2(&f, &z)) if f then z=(,) : m=cdr(m) : f=len(m)+len(z) { =c(&f, &a) } } enum out {screen="", file="out.txt"} m=each(out) while m open eval(m) for output as #f k=false StepA=CombinationsStep((1, 2, 3, 4,5), 3) While not k Print #f, StepA(&k)#str$() End While Print #f k=false StepA=CombinationsStep((0, 1, 2, 3, 4), 3) While not k Print #f, StepA(&k)#str$() End While Print #f k=false StepA=CombinationsStep(("A", "B", "C", "D","E"), 3) While not k Print #f, StepA(&k)#str$("-") End While Print #f k=false StepA=CombinationsStep(("CAT", "DOG", "BAT"), 2) While not k Print #f, StepA(&k)#str$("-") End While close #f end while win "notepad", dir$+file } StepByStep