Sto tentando di creare una funzione _.combinations
(mixaggio di sottolineatura) che richiede tre parametri arr, pockets, duplicates
. Ecco un test che ho progettato per mostrare come dovrebbe essere il comportamento.Funzione che restituisce una matrice di combinazioni di array
expect(_.combinations([1, 2], 1, false)).to.be.equal([[1],[2]])
expect(_.combinations([1, 2], 1, true)).to.be.equal([[1],[2]])
expect(_.combinations([1, 2, 3], 2, false)).to.be.equal([[1,2],[1,3],[2,3]])
expect(_.combinations([1, 2, 3], 2, true)).to.be.equal([[1,2],[1,3],[2,3],[2,1],[3,1],[3,2]])
expect(_.combinations([1, 2, 3, 4], 3, false)).to.be.equal([[1,2,3],[1,2,4],[1,3,4],[2,1,4],[2,3,4],[3,4,1]])
expect(_.combinations([1, 2, 3, 4], 3, true)).to.be.equal([[1,2,3],[1,2,4],[1,3,4],[2,1,4],[2,3,1],[2,3,4],[3,1,2],[3,4,1],[3,4,2],[4,1,2],[4,1,3],[4,2,3]])
Mi chiedevo prima di andare a creare questa funzione se esisteva già in una libreria. Forse questa funzione specifica ha già un nome che non conosco.
C'è qualcosa là fuori che fa questo?
Come punto di partenza, si può fare uso di un [insieme potenza] funzione (https://en.wikipedia.org/wiki/Power_set) (basta cercare per esso, un sacco di persone hanno scritto per funzioni it) per recuperare le combinazioni. Da lì dovrebbe essere relativamente semplice da filtrare in base agli altri argomenti –