Index finite lists of positive integers
func rank(Array arr) {
Number(arr.join('a'), 11)
}
func unrank(Number n) {
n.base(11).split('a').map { Num(_) }
}
var l = [1, 2, 3, 10, 100, 987654321]
say l
var n = rank(l)
say n
var l = unrank(n)
say lOutput:
[1, 2, 3, 10, 100, 987654321]
14307647611639042485573
[1, 2, 3, 10, 100, 987654321]Bijection:
Output:
Last updated
Was this helpful?