(phixonline)--> with javascript_semantics integer count = 0 procedure ncs(sequence rest, object taken, integer ri=0, bool contig=false, bool gap=false) if ri>=length(rest) then if contig then if integer(taken) then count += 1 else ?taken end if end if else ri += 1 ncs(rest,iff(integer(taken)?taken+1:deep_copy(taken)&rest[ri]),ri,gap,gap) ncs(rest,taken,ri,contig,iff(integer(taken)?taken!=0:length(taken)!=0)) end if end procedure ncs({1,2,3},{}) ?"===" ncs({1,2,3,4},{}) ?"===" atom t0 = time() sequence s = {} for i=1 to 20 do count = 0 ncs(tagset(i),0) s = append(s,count) end for ?elapsed(time()-t0) pp(s)