Форум сайта python.su
0
# -*- coding: utf-8 -*- import sys if len(sys.argv) > 3: print "error" sys.exit(1) n = int(sys.argv[1]) if len(sys.argv) == 3 and sys.argv[2] == "-v": f = 1 else: f = 0 class Hanoi: def move(self, a, b, c, n): if n == 1: c.append(a[0]) del a[0] if f == 1: display(a, b, c) else: move(a, c, b, n - 1) c.append(a[0]) del a[0] if f == 1: display(a, b, c) move(b, a, c, n - 1) def __init__(self, n): if n > 0: a = [] for i in range(n): a.append(i) b = [] c = [] move(a, b, c, n) def display(self, a, b, c): print u"1: ", for i in len(a): print a[i - 1] + ' ', print "" print u"1: ", for i in len(b): print a[i - 1] + ' ', print "" print u"1: ", for i in len(c): print a[i - 1] + ' ', print "" x = Hanoi(n) del x sys.exit(u"Complete")
Офлайн
0
Мне кажется, ошибка связана с использованием self.
Офлайн
0
# -*- coding: utf-8 -*- import sys class Hanoi: def move(self, a, b, c, n): if n == 1: c.append(a[0]) del a[0] if f == 1: self.display(a, b, c) else: self.move(a, c, b, n - 1) c.append(a[0]) del a[0] if f == 1: self.display(a, b, c) self.move(b, a, c, n - 1) def __init__(self, n): if n > 0: self.a = [] for i in range(n): self.a.append(i) self.b = [] self.c = [] self.n = n self.move(self.a, self.b, self.c, self.n) def display(self, a, b, c): print u"1: ", for i in range(len(a)): print str(a[i - 1]) + ' ', print "" print u"2: ", for i in range(len(b)): print str(b[i - 1]) + ' ', print "" print u"3: ", for i in range(len(c)): print str(c[i - 1]) + ' ', print "" if len(sys.argv) > 3: print "error" sys.exit(1) f = 0 n = int(sys.argv[1]) if len(sys.argv) == 3 and sys.argv[2] == "-v": f = 1 x = Hanoi(n) del x sys.exit(u"Complete")
Офлайн
0
# -*- coding: utf-8 -*- import sys class Hanoi: def move(self, a, b, c, n): if n == 1: c.append(a[len(a)-1]) del a[len(a)-1] if f == 1: self.display(a, b, c) else: self.move(a, c, b, n - 1) c.append(a[len(a)-1]) del a[len(a)-1] if f == 1: self.display(a, b, c) self.move(b, a, c, n - 1) def __init__(self, n): if n > 0: self.a = [] for i in range(n): self.a.append(n - i) self.b = [] self.c = [] self.n = n self.display(self.a, self.b, self.c) self.move(self.a, self.b, self.c, self.n) def display(self, a, b, c): print u"1: ", for i in range(len(a)): print str(a[i]) + ' ', print "" print u"2: ", for i in range(len(b)): print str(b[i]) + ' ', print "" print u"3: ", for i in range(len(c)): print str(c[i]) + ' ', print "" if len(sys.argv) > 3 or len(sys.argv) < 2: print "error" sys.exit(1) f = 0 n = int(sys.argv[1]) if len(sys.argv) == 3 and sys.argv[2] == "-v": f = 1 x = Hanoi(n) del x sys.exit(u"Complete")
Офлайн
568
c.append(a[len(a)-1])
Офлайн
568
def hanoi(n, source, helper, target): print source, helper, target if n > 0: print "move tower of size %s to helper" % (n-1) hanoi(n - 1, source, target, helper) print "move disk from source peg to target peg" if source: target.append(source.pop()) print "move tower of size %s from helper to target" % (n-1) hanoi(n - 1, helper, source, target) source = [4,3,2,1] target = [] helper = [] hanoi(len(source),source,helper,target)
Офлайн
0
Мне нужно по заданию, чтобы шаги выводились в виде:
1(стержень): 3 2
2: 1
3:
Офлайн
568
Чего Вам не хватает для того, чтобы переделать мой код под Ваши требования?
Офлайн
0
В моем коде уже реализован этот алгоритм. Мне нужно расставить вызов display так, чтобы выводился каждый шаг (перемещение 1 кольца) 1 раз при параметре -v.
Офлайн