Прикреплённый файл «h13.py»

Загрузка

   1 #!/usr/bin/python
   2 # coding: utf-8
   3 # vim:et:sw=4:
   4 
   5 '''
   6 Постановлением ЮНЕСКО оригинал Ханойской башни был подвергнут реставрации. В связи с этим во время пользования головоломкой нельзя было перекладывать кольца с первого стержня сразу на третий и наоборот. 
   7 Напишите программу, которая решает головоломку; для данного числа дисков n печатает последовательность перекладываний в формате a b c, где a — номер перекладываемого диска, b — номер стержня с которого снимается данный диск, c — номер стержня на который надевается данный диск. 
   8 '''
   9 
  10 import sys
  11 
  12 n=int(sys.argv[1])
  13 debug=len(sys.argv)>2
  14 
  15 abc=(range(n,0,-1),[],[])
  16 
  17 def other(k,l):
  18     return (0,2,1,0)[k+l]
  19 
  20 def passover(k,l):
  21     if abc[l] and abc[k][-1]>abc[l][-1]:
  22         print "OOPS",abc,k,l
  23     abc[l].append(abc[k].pop())
  24     if debug:
  25         print abc[0],abc[1],abc[2],k,l
  26     else:
  27         print abc[l][-1],k+1,l+1
  28 
  29 def hanoi(k,l,n):
  30     if k+l==2:
  31         hanoi(k,1,n)
  32         hanoi(1,l,n)
  33     elif n == 1:
  34         passover(k,l)
  35     else:
  36         hanoi(k,other(k,l),n-1)
  37         passover(k,l)
  38         hanoi(other(k,l),l,n-1)
  39 
  40 hanoi(0,2,n)

Прикреплённые файлы

Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.

Вам нельзя прикреплять файлы к этой странице.