JSFiddle - React, Tailwind, and code Playground

by imsky

JavaScript

function a2(a, b) {
    var n = a.length;
    //Size of tuples
    var l = Math.log(n) / Math.log(b);
    //Remaining items after tuples are processed
    var r = (n-1)%l, G = [], M=[];
    //How many tuples can be processed
    var p = (n-1-r)/l
    for(i = 0; i < n; i++){
        G[i] = 1;
        for(j = 0; j < l; j++){
            G[i] *= a[(i+j)%n]
        }
    }
    for(i = 0; i < n; i++){
        var q = -1;
        M[i] = 1;
        for(j = 0; j < p; j++){
            q = ((i+1) + (j*l))%n;
            M[i] *= G[q]
        }
        for(j = 0; j < r; j++){
         M[i] *= a[j+((q+l)%n)]
        }
    }
    return M;
}
var a = []
for(i = 0; i < 8; i++){
    a[i] = i+1
}
console.log(a2(a, 2))