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
Susan Sarandonoriginal
2024-12-19 19:56:12161parcourir

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;
}

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;
};

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

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!

Déclaration:
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