Código de JavaScript - Permutaciones de un array

Imágen de perfil
Val: 2.288
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Permutaciones de un arraygráfica de visualizaciones


JavaScript

Publicado el 26 de Junio del 2021 por Katas (200 códigos)
14.651 visualizaciones desde el 26 de Junio del 2021
Genera todas las permutaciones de los elementos de una matriz (contiene duplicados).

Usa la recursividad. Para cada elemento de la matriz dada, cree todas las permutaciones parciales para el resto de sus elementos. Use Array.prototype.map() para combinar el elemento con cada permutación parcial, luego Array.prototype.reduce() para combinar todas las permutaciones en una matriz. Los casos base son para una longitud de matriz igual a 2 o 1.

ADVERTENCIA: El tiempo de ejecución de esta función aumenta exponencialmente con cada elemento de la matriz. Cualquier cantidad de más de 8 a 10 entradas hará que su navegador se cuelgue mientras intenta resolver todas las diferentes combinaciones.

1
2
permutations([1, 2, 3]); // [1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]
permutations(["a", "b", "c"]); // ["a", "b", "c"], ["a", "c", "b"], ["b", "a", "c"], ["b", "c", "a"], ["c", "a", "b"], ["c", "b", "a"]

1

Publicado el 26 de Junio del 2021gráfica de visualizaciones de la versión: 1
14.652 visualizaciones desde el 26 de Junio del 2021
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
const permutations = arr => {
    if (arr.length <= 2) {
        return arr.length === 2 ? [arr, [arr[1], arr[0]]] : arr;
    }
 
    return arr.reduce((acc, el, i) =>
        acc.concat(
            permutations([...arr.slice(0, i), ...arr.slice(i + 1)]).map(val => [el, ...val])
        ),
        []
    );
};



Comentarios sobre la versión: 1 (0)


No hay comentarios
 

Comentar la versión: 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s7106