- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嘿,我在我的代码中遇到了一个新问题。有一次我有一个看起来像这个的列表。 (通常更长,但这对理解问题并不重要)
['-0---11-', '--1--110', '01---100', '1--101-0', '10-1-1-0']
在带有条形的位置可以是 0 或 1。现在我想知道列表代表了多少只剩下 3 个条形的唯一字符串。在上面的示例中,最后三个字符串已经只有三个小节,但前两个字符串有四个和五个小节。 '-0---11-'
因此可以表示 '-0--1111','-0--1110','000--11-',....
所以我的想法基本上是先创造出所有的可能性,然后寻找独特的,这样才不会多算。我现在的问题是如何创造所有可能性?
编辑:另一个更简单的例子可能会澄清我的问题。假设列表看起来像:
['--11', '--10', '010-']
现在我想看看当我最多只有 1 个柱时我有多少个独特的字符串。每个条代表一个 1 或 0,所以我必须写下所有的可能性。结果将是:
['-111', '-011', '0-11', '1-11', '-010', '-110', '0-10', '1-10', '010-']
我希望我没有忘记任何可能性。现在我必须搜索重复项并想删除它们。在这个例子中没有任何东西,所以我完成了。
最佳答案
你可以使用这样的递归解决方案
def possibilities(pattern, ndash=0):
if ndash <= pattern.count('-'):
if not pattern:
yield ''
else:
if pattern[0] == '-' and ndash > 0:
for subpattern in possibilities(pattern[1:], ndash - 1):
yield '-' + subpattern
for subpattern in possibilities(pattern[1:], ndash):
if pattern[0] in '0-':
yield '0' + subpattern
if pattern[0] in '1-':
yield '1' + subpattern
这是一个生成器函数,因此为了从中获取值,您需要遍历生成器。
>>> gen = possibilities('1----0', 3)
>>> for s in gen:
... print s
或者您可以将它提供给 list
以获得所有可能性的列表。
>>> from pprint import pprint
>>> pprint(list(possibilities('1----0', 3)
['1---00',
'1---10',
'1--0-0',
'1--1-0',
'1-0--0',
'1-1--0',
'10---0',
'11---0']
关于python - 替换字符串列表中的字符并创造所有可能性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40335164/
我在创建/理解 promise 方面遇到了困难。我了解它们的优点并了解如何使用它们。创建自己的 promise 功能是困难的部分。简单地说,如何将此函数转换为与 Promise 一起使用: ret.g
这是我以前的question的跟进 假设我想用我的函数创建一个future,但是不想立即启动它(即我不想调用val f = Future { ... // my function}。 现在,我可以看到
使用以下函数表示从本地 html 文件生成 Web 存档 function TLessonConstructor2.CreateMHT( const FileName : string):boolea
我正在研究注册安全。 @RestController public class UserController { @Autowired private BCryptPasswordEncoder bC
在下面的示例代码中,我想创建一个 Item来自 Component 的对象: struct Component { }; struct Item { explicit Item(Compone
我有以下代码。我认为通过发布我可以创建一个热流,但是每个连接上的 uniqueId 都不同。我希望 create 方法执行一次,然后作为任意数量的订阅者的热流运行。 private Date
我有以下型号 type User struct { gorm.Model Languages []Language `gorm:"many2many:user_language
我想做的是用管道创建这种通信: 1 / \ 3 2 \ / 4 所以应该有3个 child 。 parent 给第一个和第二个 child
我正在将一些代码从 Win32 移植到使用锁定文件的 Linux。我用 open 为 Linux 做了一个实现,但我不确定如果文件在 Samba 共享上它是否会工作。我试过了,它似乎可以正常工作,但我
我是一名优秀的程序员,十分优秀!