43 lines
733 B
Plaintext
43 lines
733 B
Plaintext
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
|