Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Implementations of various generating permutations algorithms in some common languages
C++ Lua Haskell Shell
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
bin
ref
solve
util/check
README.md

README.md

Problem

Given n, generate all permutations from the string of size n that starts with 'a' to char('a' + n)

Solutions

Benchmarking

Benchmarking is done for n = 11. Time measured in seconds.

On my desktop

Algorithm C++ Lua Haskell
HeapPermute 3 54
Exeter 3 59
Bogomolny 7 60
Spreading 8 63
JohnsonTrotter 9 71
InverseSelect 15 70
Factoradic 21 84
Builtin 7 16
Injection 19
Select 22

On my laptop

Algorithm C++ Lua Haskell
HeapPermute 44
Exeter 25
Bogomolny 26
Spreading 29
JohnsonTrotter 26
InverseSelect 42
Factoradic 51
Builtin 44
Injection 46
Select 49

Remarks

  • HeapPermute is fastest
  • Haskell's performance is better than expected

Todo

  • Explain HeapPermute
Something went wrong with that request. Please try again.