JavaScript에서 순열을 생성하는 방법은 무엇입니까?

순열을 생성하는 것은 많은 알고리즘 문제에서 매우 일반적인 문제입니다.

나는 이미 이 문제를 구현했으므로 algorithms repo의 내 github에서 찾을 수 있습니다.

여기에 지정된 크기의 세트에서 순열을 생성하는 함수가 있습니다.
https://github.com/gkucmierz/algorithms/blob/master/js/generate_permutations.js

따라서 3를 전달하면 다음과 같은 2차원 배열을 얻게 됩니다.

console.log(genPermutations(3));

[
  [
    0,
    1,
    2
  ],
  [
    0,
    2,
    1
  ],
  [
    1,
    0,
    2
  ],
  [
    1,
    2,
    0
  ],
  [
    2,
    0,
    1
  ],
  [
    2,
    1,
    0
  ]
]

하위 배열은 0 에서 2 까지 인덱싱되므로 이 인덱스를 사용하여 코드에 매우 쉽게 적응할 수 있습니다.

const map = ['a', 'b', 'c'];

console.log(
  genPermutations(3)
    .map(permutation => {
      return permutation.map(idx => map[idx]).join('')
    })
);

[
  'abc',
  'acb',
  'bac',
  'bca',
  'cab',
  'cba'
]

좋은 웹페이지 즐겨찾기