Прикреплённый файл «hmin.py»
Загрузка 1 #!/usr/bin/python
2 # coding: utf-8
3 # vim:et:sw=4:
4
5 '''
6 Головоломка “Ханойские башни” состоит из трех стержней, пронумерованных числами 1, 2, 3. На стержень 1 надета пирамидка из n дисков различного диаметра в порядке возрастания диаметра. Диски можно перекладывать с одного стержня на другой по одному, при этом диск нельзя класть на диск меньшего диаметра. Необходимо переложить всю пирамидку со стержня 1 на стержень 3 за минимальное число перекладываний.
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 abc[l].append(abc[k].pop())
22 if debug:
23 print abc[0],abc[1],abc[2],k,l
24 else:
25 print abc[l][-1],k+1,l+1
26
27 def hanoi(k,l,n):
28 if n == 1:
29 passover(k,l)
30 else:
31 hanoi(k,other(k,l),n-1)
32 passover(k,l)
33 hanoi(other(k,l),l,n-1)
34
35 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]]
Вам нельзя прикреплять файлы к этой странице.