JSFiddle - React, Tailwind, and code Playground

by Rui Leite

HTML

<div id="resultado"></div>

JavaScript

function GerarCombinacoes(gama, tamanho){
        var arr = [];
        for(var i = 0; i < Math.pow(gama, tamanho); i++){
            arr[i] = [];
            for(var j = 0; j < tamanho; j++){
                arr[i].push(Math.floor(i / Math.pow(gama, tamanho - j - 1)) % gama + 1);
            }
            arr[i] = arr[i].sort();
        }
        arr = arr.sort();
        arr = arr.filter(function(linha, ind, array){
            var igual_linha_acima = true;
            for(var i = 0; i < linha.length; i++){
                for(var j = 0; j < linha.length; j++){
                    if(i != j && linha[i] == linha[j]) return false;
                }
                if(linha[i] != array[ind-1][i]) igual_linha_acima = false;
            }
            if(igual_linha_acima) return false;
            return true;
        });
        return arr;
    }
var a = GerarCombinacoes(4, 3);
for(var i = 0; i < a.length; i++){
    document.getElementById("resultado").innerHTML += a[i] + "<br />";
}