Module Checkit { Function lexicographical(N) { const nl$=Chr$(13)+Chr$(10) If N<>0 then { if N=1 then =(1,) : Exit Document A$ For k=1 to N-1 A$=Str$(k,"")+{ } Next k A$=Str$(N,"") Method A$, "SetBinaryCompare" Sort A$ Flush \\ convert strings to numbers in one statement \\ in stack of values Data Param(Replace$(nl$,",", a$)) \\ return stack as array =Array([]) } else =(0,) ' empty array } Print lexicographical(5) ' 1 2 3 4 5 Print lexicographical(13) ' 1 10 11 12 13 2 3 4 5 6 7 8 9 Print lexicographical(21) ' 1 10 11 12 13 14 15 16 17 18 19 2 20 21 3 4 5 6 7 8 9 Print lexicographical(-22) ' -1 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -2 -20 -21 -22 -3 -4 -5 -6 -7 -8 -9 0 1 } Checkit Module Checkit { Function lexicographical$(N) { const nl$=Chr$(13)+Chr$(10) If N<>0 then { if N=1 then =(1,) : Exit Document A$ For k=1 to N-1 A$=Str$(k,"")+{ } Next k A$=Str$(N,"") \\ by default id TextCompare, so 0 an 1 comes first in -22 Method A$, "SetBinaryCompare" Sort A$ Flush ="["+Replace$(nl$," ", a$)+"]" } else =("",) ' empty array } Print lexicographical$(5) ' [1 2 3 4 5] Print lexicographical$(13) ' [1 10 11 12 13 2 3 4 5 6 7 8 9] Print lexicographical$(21) '[1 10 11 12 13 14 15 16 17 18 19 2 20 21 3 4 5 6 7 8 9] Print lexicographical$(-22) ' [-1 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -2 -20 -21 -22 -3 -4 -5 -6 -7 -8 -9 0 1] } Checkit