资讯专栏INFORMATION COLUMN

Python 用推导式解决“七段码”问题

番茄西红柿 / 2912人阅读

摘要:第二类是段不点亮状态即不包含段可以看作组成的是一个环零所以需要在双倍长度的字符串中取出所有长度为的所有子串共有种每个字串内部作排序后再去重留下种组合。这样两类总共合计有种组合。

 源代码

from itertools import chain,combinations as combif __name__ == '__main__':    L = list('abcdefg')    C = [[''.join(c) for c in list(comb(L,i+1)) if 'g' in c] for i in range(7)]    D = list(chain.from_iterable(C))    X = [e for e in D if 'a' in e and 'b' not in e and 'f' not in e                         or 'd' in e and 'c' not in e and 'e' not in e]    E = [d for d in D if d not in X]    L = list('abcdef')*2    A = [L[i:j] for i in range(len(L)) for j in range(i+1,len(L)+1) if len(L[i:j])<7]    B = list(set([''.join(sorted(a)) for a in A]))    F = sorted(B + E)    print('可表达字符总数:',len(F))    print('所有组合的列表:',F)

运行结果

可表达字符总数: 80
所有组合的列表: ['a', 'ab', 'abc', 'abcd', 'abcde', 'abcdef', 'abcdefg', 'abcdeg', 'abcdf', 'abcdfg', 'abcdg', 'abcef', 'abcefg', 'abceg', 'abcf', 'abcfg', 'abcg', 'abdef', 'abdefg', 'abdeg', 'abef', 'abefg', 'abeg', 'abf', 'abfg', 'abg', 'acdef', 'acdefg', 'acdfg', 'acefg', 'acfg', 'adef', 'adefg', 'aef', 'aefg', 'af', 'afg', 'b', 'bc', 'bcd', 'bcde', 'bcdef', 'bcdefg', 'bcdeg', 'bcdfg', 'bcdg', 'bcefg', 'bceg', 'bcfg', 'bcg', 'bdefg', 'bdeg', 'befg', 'beg', 'bfg', 'bg', 'c', 'cd', 'cde', 'cdef', 'cdefg', 'cdeg', 'cdfg', 'cdg', 'cefg', 'ceg', 'cfg', 'cg', 'd', 'de', 'def', 'defg', 'deg', 'e', 'ef', 'efg', 'eg', 'f', 'fg', 'g']

解题思路

分两类进行分别计算:第一类是g段处于点亮状态,即在'abcdefg'中取出所有字母组合,但要排除不包含g的,排除后有64种;最后还要排除含a但不含b或f的、含d但不含c或e的共15个(“有了a但没有b或f就形成ag不连通”,另一个同理),排除后共49种组合。
第二类是g段不点亮状态即不包含g段,可以看作a~f组成的是一个环(零),所以需要在双倍长度的字符串'abcdefabcdef'中取出所有长度为1~6的所有子串,共有57种;每个字串内部作排序后再去重,留下31种组合。这样,两类总共合计有80种组合。

欢迎加入CSDN社区!https://bbs.csdn.net/forums/PythonTogether

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/125085.html

相关文章

  • Python 进阶之路 (八) 最心的推导详解 (附简单实战及源码)

    摘要:什么是推导式大家好,今天为大家带来问我最喜欢的推导式使用指南,让我们先来看看定义推导式是的一种独有特性,推导式是可以从一个数据序列构建另一个新的数据序列的结构体。 什么是推导式 大家好,今天为大家带来问我最喜欢的Python推导式使用指南,让我们先来看看定义~ 推导式(comprehensions)是Python的一种独有特性,推导式是可以从一个数据序列构建另一个新的数据序列的结构体。...

    hufeng 评论0 收藏0
  • 经验拾忆(纯手工)=> Python高阶函数操作

    摘要:解释就相当于把每个序列元素的每一个单独用一个管道函数处理,再把他们按顺序组合成一个新可迭代对象注意这个管道函数只能是单参数函数,如果想传递多个参数怎么办使用偏函数怕有些人看不懂,这里就不用了,而是用普通函数定义方式固定值固定值固定值固定值固 map In [25]: list(map(lambda a:a**2, [1,2,3,4])) Out[25]: [1, 4, 9, 16] 解...

    Elle 评论0 收藏0
  • Python语言中计数方法的演变

    摘要:译文链接编程派有时候,利用语言简洁优雅地解决问题的方法,会随着时间变化。随着不断进化,统计列表元素数量的方法也在改变。最后将字典中相应键的值设置为新的计数。我们发现这种方法比之前的代码更加简洁优雅,所以提交了此次修改。 showImg(https://segmentfault.com/img/remote/1460000010723715); 文中如对专业术语的翻译有误,请Pytho...

    sunsmell 评论0 收藏0
  • 编写高效且优雅的 Python 代码(1)

    摘要:查看原函数的参数注释甚至函数名的时候,只能看到装饰器的相关信息。也就是说,它是装饰器的装饰器,并且以原函数为参数,作用是保留原函数的各种信息,使得我们之后查看被装饰了的原函数的信息时,可以保持跟原函数一模一样。 貌似只能创建一个专栏,所以这篇文章只好放到JavaScript从前端到全终端里了? 原文链接:Effective Python Python 作为一门入门极易并容易上瘾的语...

    roadtogeek 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<