towers_of_hanoi.sf 634 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #!/usr/bin/ruby
  2. var n = 3
  3. var tije = 3.of { [] }
  4. n.times { |i| tije[0] << (n - i) }
  5. func display() {
  6. n.range.reverse.each { |i|
  7. tije.range.each { |j|
  8. var k = tije[j][i]\\0
  9. var disc = '='*k
  10. var space = ' '*(n-k)
  11. print (space + disc + '|' + disc + space)
  12. }
  13. print "\n"
  14. }
  15. print "\n"
  16. }
  17. func move(a, b) {
  18. tije[b].push(tije[a].pop)
  19. }
  20. func hanoi(n, a=0, b=1, c=2) {
  21. if (n == 1) {
  22. move(a, b)
  23. display()
  24. }
  25. else {
  26. hanoi(n-1, a, c, b)
  27. hanoi( 1, a, b, c)
  28. hanoi(n-1, c, b, a)
  29. }
  30. }
  31. display()
  32. hanoi(n)