Skip to content

Instantly share code, notes, and snippets.

@Rayraegah
Created May 7, 2019 23:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Rayraegah/608e284cd2b6b2bae7af276dfe3780ef to your computer and use it in GitHub Desktop.
Save Rayraegah/608e284cd2b6b2bae7af276dfe3780ef to your computer and use it in GitHub Desktop.
Permutations
function permutations(list) {
// Empty list has one permutation
if (list.length == 0) return [[]];
var result = [];
for (var i = 0; i < list.length; i++) {
// Clone list (kind of)
var copy = Object.create(list);
// Cut one element from list
var head = copy.splice(i, 1);
// Permute rest of list
var rest = permutations(copy);
// Add head to each permutation of rest of list
for (var j = 0; j < rest.length; j++) {
var next = head.concat(rest[j]);
result.push(next);
}
}
return result;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment