- 论坛徽章:
- 0
|
class hanotower:
def __init__(self):
self.start=[]
self.end=[]
self.tmp=[]
#self.last=[]
self.flag='N'
def fill(self,n):
self.start=list(range(n,0,-1))
self.end=[]
self.tmp=[]
self.flag='Y'
def get_state(self):
trans=[]
length=max(len(self.start),len(self.tmp),len(self.end))
def coalesce(aList,i):
if i<0 or i>=len(aList) or len(aList)==0 :return '0'
else:return str(aList[i])
for i in range(length-1,-1,-1):
seg=[coalesce(self.start,i),coalesce(self.tmp,i),coalesce(self.end,i)]
trans=trans+[seg]
return trans
def print_state(self):
print('--------------------------------------------------------')
for sub in self.get_state():
print('\t'+sub[0]+'\t'+sub[1]+'\t'+sub[2])
print('--------------------------------------------------------')
def move(self,k,s,d,t):
self.print_state()
if k==1 :
self.print_state()
d.append(s.pop())
else:
self.print_state()
move(k-1,s,t,d)
self.print_state()
d.append(s.pop())
self.print_state()
move(k-1,t,d,s)
self.print_state()
def start_to_end(self):
if self.flag=='N' :
self.fill(5)
else:
self.print_state()
self.move(len(self.start),self.start,self.end,self.tmp)
self.print_state()
def main():
h=hanotower()
h.fill(5)
print('begin')
#h.print_state()
h.start_to_end()
print('end')
#h.print_state()
if __name__=='__main__':
main()
学习写的汉诺塔的问题,但是得不到正确的结果 ,而且能否指点一下使 代码具有 python 的特点。
谢谢! |
|