Python实现的生成格雷码功能示例


Posted in Python onJanuary 24, 2018

本文实例讲述了Python实现的生成格雷码功能。分享给大家供大家参考,具体如下:

问题

在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。

解决方法:

给定一个整数n,请返回n位的格雷码,顺序为从0开始。

测试样例:

返回:["0","1"]

题目很刁钻,题干很简洁,样例很高冷……

Python实现的生成格雷码功能示例

其中有一些微妙的关系

Python实现的生成格雷码功能示例

发现了这个规律之后,代码自然就很好写了

# -*- coding:utf-8 -*-
class GrayCode:
  def getGray(self, n):
    # write code here
    global maxn
    maxn = n
    return GrayCode.getGrace(self, ['0', '1'], 1)
  def getGrace(self, list_grace, n):
    global maxn
    if n >= maxn:
      return list_grace
    list_befor, list_after = [], []
    for i in xrange(len(list_grace)):
      list_befor.append('0' + list_grace[i])
      list_after.append('1' + list_grace[-(i + 1)])
    return GrayCode.getGrace(self, list_befor + list_after, n + 1)
gary = GrayCode()
print "三水点靠木测试结果:"
print gary.getGray(3)

运行结果:

Python实现的生成格雷码功能示例

更多关于Python相关内容可查看本站专题:《Python字符串操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python设计模式之中介模式简单示例
Jan 09 Python
使用apidocJs快速生成在线文档的实例讲解
Feb 07 Python
使用python生成目录树
Mar 29 Python
Django如何配置mysql数据库
May 04 Python
Django1.9 加载通过ImageField上传的图片方法
May 25 Python
python opencv摄像头的简单应用
Jun 06 Python
python3的数据类型及数据类型转换实例详解
Aug 20 Python
python3中利用filter函数输出小于某个数的所有回文数实例
Nov 24 Python
django实现后台显示媒体文件
Apr 07 Python
详解python算法常用技巧与内置库
Oct 17 Python
Python中可变和不可变对象的深入讲解
Aug 02 Python
Python办公自动化解决world文件批量转换
Sep 15 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
Jan 24 #Python
Python3结合Dlib实现人脸识别和剪切
Jan 24 #Python
深入浅析Python中的yield关键字
Jan 24 #Python
Python3.6安装及引入Requests库的实现方法
Jan 24 #Python
pycharm+django创建一个搜索网页实例代码
Jan 24 #Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
Jan 24 #Python
Sublime开发python程序的示例代码
Jan 24 #Python
You might like
提升PHP执行速度全攻略(上)
2006/10/09 PHP
PHP的几个常用数字判断函数代码
2012/04/24 PHP
PHP常用技巧汇总
2016/03/04 PHP
PHP读取XML格式文件的方法总结
2017/02/27 PHP
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
JS实现self的resend
2010/07/22 Javascript
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
javascript运动效果实例总结(放大缩小、滑动淡入、滚动)
2016/01/08 Javascript
noty ? jQuery通知插件全面解析
2016/05/18 Javascript
JS中Array数组学习总结
2017/01/18 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
2017/07/23 Javascript
vue 弹框产生的滚动穿透问题的解决
2018/09/21 Javascript
详解微信小程序实现跑马灯效果(附完整代码)
2019/04/29 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
vue路由缓存的几种实现方式小结
2020/02/02 Javascript
design vue 表格开启列排序的操作
2020/10/28 Javascript
Python 连连看连接算法
2008/11/22 Python
python实现自动更换ip的方法
2015/05/05 Python
windows系统下Python环境的搭建(Aptana Studio)
2017/03/06 Python
Python元组常见操作示例
2019/02/19 Python
django 捕获异常和日志系统过程详解
2019/07/18 Python
python模拟斗地主发牌
2020/04/22 Python
HTML5拖拽文件上传的示例代码
2021/03/04 HTML / CSS
设计师珠宝:Ylang 23
2018/05/11 全球购物
eDreams加拿大:廉价航班、酒店和度假
2019/03/29 全球购物
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
安全生产中长期规划实施方案
2014/02/21 职场文书
学校爱国卫生月活动总结
2014/06/25 职场文书
综治目标管理责任书
2015/05/11 职场文书
vue实现列表拖拽排序的示例代码
2022/04/08 Vue.js