使用python实现递归版汉诺塔示例(汉诺塔递归算法)


Posted in Python onApril 08, 2014

利用python实现的汉诺塔。带有图形演示

from time import sleep
def disp_sym(num, sym):
        print(sym*num, end='')
#recusion
def hanoi(a, b, c, n, tray_num):
 if n == 1:
  move_tray(a, c)
  disp(tray_num)
  sleep(0.7)
 else:
  hanoi(a, c, b, n-1, tray_num)
  move_tray(a, c)
  disp(tray_num)
  sleep(0.7)
  hanoi(b, a, c, n-1, tray_num)
def move_tray(a, b):
 for i in a:
  if i != 0:
   for j in b:
    if j != 0:
     b[b.index(j) - 1] = i
     a[a.index(i)] = 0
     return
   b.append(i)
   b.pop(0)
   a[a.index(i)] = 0
   return
def disp(tray_num):
 global a, b, c
 for i in range(tray_num):
  for j in ['a', 'b', 'c']:
   disp_sym(5, ' ')
   eval('disp_sym(tray_num - ' + j + "[i], ' ')")
   eval('disp_sym(' + j + "[i], '=')")
   disp_sym(1, '|')
   eval('disp_sym(' + j + "[i], '=')")
   eval('disp_sym(tray_num - ' + j + "[i], ' ')")
  print()
 print('---------------------------------------------------------------------------')
tray_num=int(input("Please input the number of trays:"))
tray=[]
for i in range(tray_num):
 tray.append(i + 1)
a=[0]*tray_num
b=a[:]
c=a[:]
a = tray[:]
disp(tray_num)
hanoi(a, b, c, tray_num, tray_num)
Python 相关文章推荐
python合并文本文件示例
Feb 07 Python
用Python给文本创立向量空间模型的教程
Apr 23 Python
python简单实现刷新智联简历
Mar 30 Python
Python制作简易注册登录系统
Dec 15 Python
python 去除txt文本中的空格、数字、特定字母等方法
Jul 24 Python
对python 通过ssh访问数据库的实例详解
Feb 19 Python
Python模拟登录之滑块验证码的破解(实例代码)
Nov 18 Python
简单了解python装饰器原理及使用方法
Dec 18 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
Jan 16 Python
python生成任意频率正弦波方式
Feb 25 Python
python Plotly绘图工具的简单使用
Mar 03 Python
用python写PDF转换器的实现
Oct 29 Python
python计算圆周长、面积、球体体积并画出圆
Apr 08 #Python
python实现类似ftp传输文件的网络程序示例
Apr 08 #Python
Python collections模块实例讲解
Apr 07 #Python
python操作xml文件示例
Apr 07 #Python
python生成随机验证码(中文验证码)示例
Apr 03 #Python
python读取html中指定元素生成excle文件示例
Apr 03 #Python
python实现zencart产品数据导入到magento(python导入数据)
Apr 03 #Python
You might like
一篇不错的PHP基础学习笔记
2007/03/18 PHP
php中存储用户ID和密码到mysql数据库的方法
2013/02/06 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
CI框架安全类Security.php源码分析
2014/11/04 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
2015/12/19 PHP
PHP+MySQL实现模糊查询员工信息功能示例
2018/06/01 PHP
Yii框架安装简明教程
2020/05/15 PHP
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
javascript数字时钟示例分享
2014/04/23 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
2016/08/05 Javascript
javascript实现多张图片左右无缝滚动效果
2017/03/22 Javascript
基于jQuery和CSS3实现APPLE TV海报视差效果
2017/06/16 jQuery
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
微信小程序实现原生步骤条
2019/07/25 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
用Python实现一个简单的能够上传下载的HTTP服务器
2015/05/05 Python
Python中的zipfile模块使用详解
2015/06/25 Python
python dict 字典 以及 赋值 引用的一些实例(详解)
2017/01/20 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
Python中的asyncio代码详解
2019/06/10 Python
Pytorch Tensor 输出为txt和mat格式方式
2020/01/03 Python
Python reversed函数及使用方法解析
2020/03/17 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
CSS3新增布局之: flex详解
2020/06/18 HTML / CSS
HTML5注册表单的自动聚焦与占位文本示例代码
2013/07/19 HTML / CSS
iframe与window.onload如何使用详解
2020/05/07 HTML / CSS
共筑中国梦演讲稿
2014/04/23 职场文书
文化建设工作方案
2014/05/12 职场文书
学校募捐倡议书
2014/05/14 职场文书
大专学生求职自荐信
2014/07/06 职场文书
学用政策心得体会
2014/09/10 职场文书
四年级数学教学反思
2016/02/16 职场文书
python如何正确使用yield
2021/05/21 Python
浅谈 JavaScript 沙箱Sandbox
2021/11/02 Javascript
基于Python实现流星雨效果的绘制
2022/03/18 Python