Based on the paper by Peter Seymour.
$ npm install --save elen
ELEN provides a way of textually representing numbers such that their natural order is preserved as a lexicographical order (i.e. alphabetical order) of their representations.
Imagine you need to represent numbers textually. A simple solution would be to simply call num.toString()
. E.g.:
7..toString() // '7'
11..toString() // '11'
For many applications, this will suffice. However, notice that the natural order of the input numbers does not match the lexicographical order of the generated strings. I.e.:
[7, 11].sort((a, b) => a - b) // [ 7, 11 ]
['7', '11'].sort() // [ '11', '7' ]
That's where ELEN comes in. ELEN provides a way of textually representing numbers such that the following property is fulfilled:
assert.deepEqual(
nums.map(elen.encode).sort().map(elen.decode),
nums.sort((a, b) => a - b)
)
const elen = require('elen')
const encoded = [
elen.encode(0),
elen.encode(42),
elen.encode(1),
elen.encode(-10),
elen.encode(5e100),
elen.encode(-Infinity),
]
encoded.sort()
elen.decode(encoded[4]) // 42
<html>
<head>
...
<script src="https://unpkg.com/elen"></script>
</head>
...
</html>
$ npm run docs
Browse automatically generated jsdocs online.