Maison > interface Web > js tutoriel > Comment puis-je générer toutes les permutations d'un tableau d'entiers en JavaScript ?

Comment puis-je générer toutes les permutations d'un tableau d'entiers en JavaScript ?

Susan Sarandon
Libérer: 2024-12-19 19:56:12
original
169 Les gens l'ont consulté

How Can I Generate All Permutations of an Integer Array in JavaScript?

Génération de permutations en JavaScript

Pour générer des permutations d'un tableau d'entiers en JavaScript, une fonction récursive peut être utilisée. Le but est de prendre un tableau d'entiers en entrée et de renvoyer un tableau contenant toutes les permutations possibles, chacune ayant la même longueur que le tableau d'entrée.

Fonction de permutation modifiée

La fonction fournie pour la permutation de chaînes peut être modifiée en considérant les différences dans la façon dont les méthodes fonctionnent sur les entiers et chaînes :

const permArr = [];
const usedNums = [];

function permuteIntegers(input) {
  for (let i = 0; i < input.length; i++) {
    const num = input.splice(i, 1)[0];
    usedNums.push(num);
    if (input.length === 0) {
      permArr.push([...usedNums]);
    }
    permuteIntegers(input);
    input.splice(i, 0, num);
    usedNums.pop();
  }
  return permArr;
}
Copier après la connexion

Version plus courte et moderne (ES6)

Grâce aux fonctionnalités JavaScript modernes, la fonction ci-dessus peut être simplifiée :

const permutator = (inputArr) => {
  const result = [];

  const permute = (arr, memo = []) => {
    if (arr.length === 0) {
      result.push(memo);
    } else {
      for (let i = 0; i < arr.length; i++) {
        const curr = arr.slice();
        const next = curr.splice(i, 1)[0];
        permute(curr, memo.concat(next));
      }
    }
  };

  permute(inputArr);
  return result;
};
Copier après la connexion

Exemples d'utilisation

Les deux fonctions peuvent être utilisées pour générer des permutations de tableaux d'entiers :

console.log(permuteIntegers([1, 2, 3])); // Output: [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]

console.log(permutator([1, 2, 3])); // Output: same as above
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal