Digamos que tengo una matriz de permutaciones.
var D = [["A","B","C"],["A","C","B"],["B","A","C"],["B","C","A"],["C","A","B"],["C","B","A"]]Quiero hacer lo contrario de enumerar todas las permutaciones de una combinación. Quiero encontrar la combinación única de las permutaciones usando javascript.
Esa combinación única sería
unique = [["A","B","C"]]Este es solo un ejemplo simple. Quiero encontrar las combinaciones únicas de un conjunto más grande de permutaciones con más elementos, pero creo que la solución sería escalable.
¿Cómo encuentro la combinación única usando javascript?
Esta puede ser una solución:
var D = [["A","B","C"],["A","C","B"],["B","A","C"],["B","C","A"],["C","A","B"],["C","B","A"]]; const unique = [...new Map(D.map(i => [i.sort().join(''), i])).values()]; console.log(unique);No tengo claro lo que estás preguntando, pero creo que quieres encontrar cada símbolo que aparece en la lista original. ¿Todos los arreglos dentro de la lista original contendrán los mismos caracteres (es decir, todos los subarreglos en var D solo estarán compuestos por "A" , "B" y "C" )? Si es así, puede recorrer su matriz D y realizar un seguimiento de cada elemento que ve en un Set , lo que eliminará automáticamente su salida:
var D = [["A","B","C"],["A","C","B"],["B","A","C"],["B","C","A"],["C","A","B"],["C","B","A"]] const uniques = new Set() for(const arr of D) { for(const c of arr) { uniques.add(c) } } console.log(uniques) // -> Set(3) {'A', 'B', 'C'}Luego, si se necesita ese formato de salida específico, puede convertir el conjunto con algo como
const arr = [] for(const c of uniques) { arr.push(c) } const result = [ arr ] console.log(result) // -> [['A', 'B', 'C']]