"""
Created on Thu Apr 11 01:38:22 2019
@author: Douglas Silveira
"""
class TorreDeHanoi:
def __init__(self, numDiscos, origem, intermed, destino):
self.numDiscos = numDiscos
self.torres = {
origem: Stack(),
intermed: Stack(),
destino: Stack()
}
for i in range(n, 0, -1):
self.torres[origem].push(i);
def moverDisco(self, origem, destino):
self.torres[destino].push(self.torres[origem].pop())
print("{} para {}".format(origem, destino))
def moverTorre(self, n, origem, intermed, destino):
if n >= 1:
self.moverTorre(n-1, origem, destino, intermed)
self.moverDisco(origem, destino)
self.moverTorre(n-1, intermed, origem, destino)
class Stack:
def __init__(self):
self.items = []
def isEmpty(self):
return len(self) == 0
def push(self, item):
self.items.append(item)
def pop(self):
if not self.isEmpty():
return self.items.pop()
else:
raise IndexError("pop from empty Stack")
def peek(self):
return self.items[len(self.items)-1]
def __len__(self):
return len(self.items)
n = int(input("número de discos: "))
torre = TorreDeHanoi(n, "Origem", "Intermediária", "Destino")
torre.moverTorre(n, "Origem", "Intermediária", "Destino")