permutation-rank
Version:
Ranks and unranks permutations
61 lines (51 loc) • 945 B
JavaScript
var test = require("tape")
, rank = require("../index.js").rank
, unrank = require("../index.js").unrank
var ranks = [
[ ],
[ ],
[ ],
[ ],
[ ],
[ ],
[ ],
[ ],
[ ],
[ ],
[ ],
[ ],
[ ],
[ ],
[ ],
[ ],
[ ],
[ ],
[ ],
[ ],
[ ],
[ ],
[ ],
[ ]
]
test("rank", function(t) {
t.equals(rank([]), 0)
t.equals(rank([0]), 0)
for(var i=0; i<ranks.length; ++i) {
t.equals(rank(ranks[i]), i, "rank " + i + ":" + ranks[i])
}
t.end()
})
test("unrank", function(t) {
function check(r, b) {
var a = unrank(b.length, r)
t.equals(a.join(","), b.join(","), "unrank " + r + ":" + b)
}
check(0, [])
check(0, [0])
check(0, [1,0])
check(1, [0,1])
for(var i=0; i<ranks.length; ++i) {
check(i, ranks[i])
}
t.end()
})