JSFiddle - React, Tailwind, and code Playground

by Steven Senkus

JavaScript

var allArrays = [
    [0, 2, 4],
    [1, 3, 5],
    [6, 7]
];

// Pre-calculate divisors
var divisors = [];
for (var i = allArrays.length - 1; i >= 0; i--) {
    divisors[i] = divisors[i + 1] ? divisors[i + 1] * allArrays[i + 1].length : 1;
    console.log(divisors);
}

function getPermutation(n) {
    var result = "",
        curArray;

    for (var i = 0; i < allArrays.length; i++) {
        curArray = allArrays[i];
        result += curArray[Math.floor(n / divisors[i]) % curArray.length];
    }

    return result;
}

var counts = [];
allArrays.forEach(function (arr) {
    counts.push(arr.length);
});

var zzz = counts.reduce(function (pr, ne) {
    return pr * ne;
});
console.log('', zzz);
for (var q = 0; q < 100; q++) {
    console.log(getPermutation(q));
}