Heap's Permutation Algorithm in Javascript
14 Dec 2014Here’s a JavaScript implementation of Heap’s Permutation Algorithm, which finds all possible permutations of an array for you.
Here’s an example:
prints:
[ 1, 2, 3 ] [ 2, 1, 3 ] [ 3, 1, 2 ] [ 1, 3, 2 ] [ 2, 3, 1 ] [ 3, 2, 1 ]
The first argument to heapsPermute
should be an array
of values to permute. The second argument, output
, gets invoked on each unique value. The third argument is an internal counter — don’t use it when you call the function.
This algorithm runs in factorial time, and takes quite a while if you run it with an array longer than 10 items. For example, n = 7 took my computer about 1 second; n = 8 took around 7 seconds; n = 9 took over a minute to print the 362880 different permutations.
Neil Lokare and I needed this to create a Scrabble Solver, which takes a random grab bag of letters and finds all valid words.