52 lines
2 KiB
Text
52 lines
2 KiB
Text
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
|