Skip to content

Instantly share code, notes, and snippets.

@hpoit
Last active March 13, 2018 13:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hpoit/89d737c962071b79f38577069e73db1b to your computer and use it in GitHub Desktop.
Save hpoit/89d737c962071b79f38577069e73db1b to your computer and use it in GitHub Desktop.
Khan Hanoi Towers
julia> function hanoi(n, source, dest, spare)
if n == 1
println("Move disk 1 from rod $source to rod $dest")
else n >= 2
hanoi(n - 1, source, spare, dest)
println("Move disk $n from rod $source to rod $dest")
hanoi(n - 1, spare, dest, source)
end
end
hanoi (generic function with 1 method)
julia> hanoi(3, "A", "B", "C")
Move disk 1 from rod A to rod B # step 1, recurse
Move disk 2 from rod A to rod C # step 2, recurse
Move disk 1 from rod B to rod C # step 3, recurse
Move disk 3 from rod A to rod B # base case, n == 1
Move disk 1 from rod C to rod A # step 1, recurse
Move disk 2 from rod C to rod B # step 2, recurse
Move disk 1 from rod A to rod B # step 3, recurse
julia> hanoi(4, "A", "B", "C")
Move disk 1 from rod A to rod C # step 1
Move disk 2 from rod A to rod B # step 2
Move disk 1 from rod C to rod B # step 3
Move disk 3 from rod A to rod C # base case
Move disk 1 from rod B to rod A # 1
Move disk 2 from rod B to rod C # 2
Move disk 1 from rod A to rod C # 3
Move disk 4 from rod A to rod B # base case
Move disk 1 from rod C to rod B # 1
Move disk 2 from rod C to rod A # 2
Move disk 1 from rod B to rod A # 3
Move disk 3 from rod C to rod B # base case
Move disk 1 from rod A to rod C # 1
Move disk 2 from rod A to rod B # 2
Move disk 1 from rod C to rod B # 3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment