Fast Split Towers of Hanoi

Again, our previous solution is working, but it is far from being optimal. When moving the towers, we use the algorithm for 3 pegs even if we have 4 pegs. Of course, movements to the last peg are restricted since it contains the other stack, but we can always store the smallest disk on top of the other stack before moving our stack.

For that, we need to devise a new function hanoi_fast(height, src, free, full, dst) that moves the stack from src to dst using free, but storing the smallest disk onto full beforehand.

The hanoi_fast(height, src, free, full, dst) function is not recursive. It moves the first disk and then call the regular hanoi() function.

This change greatly improve the performance, as you can see below. Of course, this trick could also be used for the interleaved algorithm, leading as expected to the exact same performance.

Disks amountInterleavedSlow SplitFast Split
5 pairs 62 moves 88 moves 46 moves
6 pairs 126 moves 183 moves 82 moves
7 pairs 254 moves 374 moves 150 moves

As a conclusion, most of us are satisfied with a working solution and we easily overlook possibilities to improve the problem decomposition. You should not do that ;)