Module Non_continuous_subsequences (item$(), display){ Function positions(n) { function onebit { =lambda b=false (&c)-> { =b :if c then b~:c=not b } } dim k(n)=onebit(), p(n) m=true flush for i=1 to 2^n { for j=0 to n-1 :p(j)= k(j)(&m) :next m1=p(0) m2=0 for j=1 to n-1 if m2 then if m1>p(j) then m2=2:exit for if m1 < p(j) then m2++ m1=p(j) next if m2=2 then data cons(p())' push a copy of p() to end of stack m=true } =array([]) } a=positions(len(item$())) if display then For i=0 to len(a)-1 b=array(a,i) line$=format$("{0::-5})",i+1,) for j=0 to len(b)-1 if array(b,j) then line$+=" "+item$(j) next print line$ doc$<=line$+{ } next end if line$="Non continuous subsequences:"+str$(len(a)) Print line$ doc$<=line$+{ } } global doc$ document doc$ ' change string to document object Non_continuous_subsequences ("1","2","3","4"), true Non_continuous_subsequences ("a","e","i","o","u"), true Non_continuous_subsequences ("R","o","s","e","t","t","a"), true Non_continuous_subsequences ("1","2","3","4","5","6","7","8","9","0"), false clipboard doc$