Прикреплённый файл «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 из ссылки «[получить]», так как он чисто внутренний и может измениться.- [получить | показать] (2011-09-26 11:35:20, 0.8 KB) [[attachment:Sav_1_Hanoi_all.py]]
- [получить | показать] (2011-09-26 11:35:20, 0.4 KB) [[attachment:Sav_2_circledot.py]]
- [получить | показать] (2011-09-26 11:35:20, 1.5 KB) [[attachment:h13.py]]
- [получить | показать] (2011-09-26 11:35:20, 1.7 KB) [[attachment:hcir.py]]
- [получить | показать] (2011-09-26 11:35:20, 1.7 KB) [[attachment:hmin.py]]
Вам нельзя прикреплять файлы к этой странице.