Skip to content

Instantly share code, notes, and snippets.

@francoisromain
Last active September 4, 2021 10:37
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save francoisromain/31002e2d5f596ff8abf0 to your computer and use it in GitHub Desktop.
Save francoisromain/31002e2d5f596ff8abf0 to your computer and use it in GitHub Desktop.
permutations.js
/*
A function that generates every possible sequences of permutations
of elements in a given array.
For example
with a given array ['rock', 'paper', 'scissors']
and a size = 3;
the output should look something like:
[["rock", "rock", "rock"],
["rock", "rock", "paper"],
["rock", "rock", "scissors"],
["rock", "paper", "rock"],
...etc...
]
*/
var permutations = function (size, array) {
var solutions = [];
var solution = [];
var findSolutions = function(n) {
// base case
if (n === size) {
solutions.push(solution.slice());
return;
}
for (var i = 0; i < array.length; i++) {
solution.push(array[i]);
findSolutions(n+1);
solution.splice(n,1);
}
}
findSolutions(0);
return solutions;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment