Oleksandr Gavenko's blog
2017-01-28 22:40 Solution for Tower of Hanoi problem in JS

"Tower of Hanoi" is a famous task. It has a simple recursive solution.

One liner in JavaScript may look like:

function han(src, dst, aux, n) {if (n > 0) {han(src, aux, dst, n-1); console.log("%s => %s: %d", src, dst, n); han(aux, dst, src, n-1);}}

Or more verbose:

function han(src, dst, aux, n) {
  if (n > 0) {
    han(src, aux, dst, n-1);
    console.log("%s => %s: %d", src, dst, n);
    han(aux, dst, src, n-1);
  }
}

Tests:

han("src", "dst", "aux", 1);
han("src", "dst", "aux", 2);
han("src", "dst", "aux", 3);

Example of output for n=3:

src => dst: 1
src => aux: 2
dst => aux: 1
src => dst: 3
aux => src: 1
aux => dst: 2
src => dst: 1

Solution have such number of moves:

N(n) = 2^n - 1

Compare my implementation with http://interglacial.com/hoj/hoj.html

See also:

https://en.wikipedia.org/wiki/Tower_of_Hanoi

Wikipedia description of mathematical task "Tower of Hanoi".

problem, js

Feeds

all / emacs / java

Tags

adb(1), admin(1), android(1), anki(1), ansible(2), aop(1), blog(2), bytecode(1), c(1), css(2), cygwin(2), driver(1), emacs(3), fs(1), git(3), google(1), gradle(1), hardware(1), hg(2), html(1), interview(13), java(4), js(3), lang(2), lighttpd(1), markdown(1), mobile(1), naming(1), oracle(1), print(1), problem(5), python(1), quiz(6), rst(2), security(3), spring(2), sql(2), srs(1), style(1), tls(2), txt(1), unit(1), utils(1), vcs(3), web(2), win(2), windows(1)

Archive