#!/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)