Estadísticas del código: Combinaciones únicas o permutaciones incompletas en array - JavaScript

Imágen de perfil
Val: 553
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Combinaciones únicas o permutaciones incompletas en array


JavaScript

estrellaestrellaestrellaestrellaestrella(3)
Publicado el 18 de Septiembre del 2017 por Kip (28 códigos)
13.515 visualizaciones desde el 18 de Septiembre del 2017
Código creado a partir de un tema del foro http://www.lawebdelprogramador.com/foros/JavaScript/1622319-Combinaciones-en-array.html, muy débil ya que no obtiene las permutaciones completas pero es posible obtener las combinaciones únicas en su totalidad, tal como comenta el usuario:

Estimados, alguna idea de algoritmo en javascript para generar las combinaciones posibles de n numero de elementos en un array sin repeticion, pongo un ejemplo practico, si tengo "[A,B,C,D]", me retorne en un array
"[A-B-C-D,A-B-C,A-B-D,A-C-D,B-C-D,A-B,A-C,A-D,B-C,B-D,C-D,A,B,C,D]", cualquier idea me sirve muchas gracias.


El algoritmo es simple, creo un array temporal y en base a este creo las combinaciones tomando en cuenta el número de combinaciones, este número es creado a partir del tamaño del array principal.

No es perfecto para arrays con un tamaño muy elevado.

Por defecto trae las permutaciones, se deberia enviar un true para que traiga combinaciones unicas.

Ejemplo permutaciones

1
console.log(combinations(['A', 'B', 'C', 'D']));

Obtendriamos algo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[ 'A-B-C-D',
  'A-C-D-B',
  'A-D-B-C',
  'B-C-D-A',
  'B-D-A-C',
  'B-A-C-D',
  'C-D-A-B',
  'C-A-B-D',
  'C-B-D-A',
  'D-A-B-C',
  'D-B-C-A',
  'D-C-A-B',
  'A-B-C',
  'A-C-D',
  'A-D-B',
  'B-C-D',
  'B-D-A',
  'B-A-C',
  'C-D-A',
  'C-A-B',
  'C-B-D',
  'D-A-B',
  'D-B-C',
  'D-C-A',
  'A-B',
  'A-C',
  'B-C',
  'B-D',
  'C-D',
  'C-A',
  'D-A',
  'D-B',
  'A',
  'B',
  'C',
  'D' ]

Como se ve, faltan ciertas permutaciones, ya que fue pensado mas bien para obtener combinaciones unicas.

Ejemplo combinaciones

1
console.log(combinations(['A', 'B', 'C', 'D'], true));

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[ 'A-B-C-D',
  'A-B-C',
  'A-C-D',
  'A-B-D',
  'B-C-D',
  'A-B',
  'A-C',
  'B-C',
  'B-D',
  'C-D',
  'A-D',
  'A',
  'B',
  'C',
  'D' ]

269 visualizaciones durante los últimos 90 días


14
0