#!/usr/bin/ruby

var n = 3
var tije = 3.of { [] }
n.times { |i| tije[0] << (n - i) }

func display() {
    n.range.reverse.each { |i|
        tije.range.each { |j|
            var k = tije[j][i]\\0
            var disc = '='*k
            var space = ' '*(n-k)
            print (space + disc + '|' + disc + space)
        }
        print "\n"
    }
    print "\n"
}

func move(a, b) {
    tije[b].push(tije[a].pop)
}

func hanoi(n, a=0, b=1, c=2) {
    if (n == 1) {
        move(a, b)
        display()
    }
    else {
        hanoi(n-1, a, c, b)
        hanoi(  1, a, b, c)
        hanoi(n-1, c, b, a)
    }
}

display()
hanoi(n)