到目前为止,我已经创建了生成5个变量(其中“ o”是变量)乘法问题的代码,以便显示分组符号的每种可能组合。到目前为止,这种方法还不错,但是如果我要更改变量数(例如更改为6或3),则需要在最后一个变量的末尾添加另一个几乎相同的for循环。我正在尝试找到一种方法,它将根据用户输入的变量自动执行此操作。
group = []
a = '( o * o )'
for i in range(len(a)):
if a[i] == 'o':
b = (a[:i] + a + a[i+1:])
for l in range(len(b)):
if b[l] == 'o':
c = (b[:l] + a + b[l+1:])
for j in range(len(c)):
if c[j] == 'o':
d = (c[:j] + a + c[j+1:])
group.append(d)
group = list(set(group))
for i in range(len(group)):
print(group[i])
输出:
( ( o * ( o * ( o * o ) ) ) * o )
( ( o * o ) * ( o * ( o * o ) ) )
( o * ( ( o * o ) * ( o * o ) ) )
( ( o * ( ( o * o ) * o ) ) * o )
( ( ( o * ( o * o ) ) * o ) * o )
( ( ( o * o ) * o ) * ( o * o ) )
( o * ( ( ( o * o ) * o ) * o ) )
( o * ( ( o * ( o * o ) ) * o ) )
( ( o * o ) * ( ( o * o ) * o ) )
( ( ( ( o * o ) * o ) * o ) * o )
( o * ( o * ( o * ( o * o ) ) ) )
( o * ( o * ( ( o * o ) * o ) ) )
( ( ( o * o ) * ( o * o ) ) * o )
( ( o * ( o * o ) ) * ( o * o ) )
答案 0 :(得分:1)
使用递归。请注意,参数n
表示深度级别,并且由于原子组( o * o )
中有两个变量,因此n
应该比希望获得的变量数少2。乘法组组合。
a = '( o * o )'
def g(n):
if n == 0:
return {a}
r = set()
for b in g(n - 1):
for i in range(len(b)):
if b[i] == 'o':
r.add(b[:i] + a + b[i + 1:])
return r
for n in range(5):
print(g(n))
这将输出:
{'( o * o )'}
{'( ( o * o ) * o )', '( o * ( o * o ) )'}
{'( ( ( o * o ) * o ) * o )', '( ( o * o ) * ( o * o ) )', '( o * ( o * ( o * o ) ) )', '( o * ( ( o * o ) * o ) )', '( ( o * ( o * o ) ) * o )'}
{'( ( ( o * o ) * ( o * o ) ) * o )', '( ( o * o ) * ( ( o * o ) * o ) )', '( o * ( o * ( o * ( o * o ) ) ) )', '( ( ( o * ( o * o ) ) * o ) * o )', '( ( o * o ) * ( o * ( o * o ) ) )', '( ( o * ( o * o ) ) * ( o * o ) )', '( o * ( o * ( ( o * o ) * o ) ) )', '( ( o * ( o * ( o * o ) ) ) * o )', '( ( ( o * o ) * o ) * ( o * o ) )', '( o * ( ( o * o ) * ( o * o ) ) )', '( ( o * ( ( o * o ) * o ) ) * o )', '( ( ( ( o * o ) * o ) * o ) * o )', '( o * ( ( ( o * o ) * o ) * o ) )', '( o * ( ( o * ( o * o ) ) * o ) )'}
{'( o * ( ( ( o * o ) * ( o * o ) ) * o ) )', '( ( ( o * ( o * o ) ) * ( o * o ) ) * o )', '( ( o * o ) * ( o * ( o * ( o * o ) ) ) )', '( ( ( o * o ) * o ) * ( o * ( o * o ) ) )', '( ( ( o * o ) * o ) * ( ( o * o ) * o ) )', '( ( ( o * ( o * o ) ) * o ) * ( o * o ) )', '( o * ( ( ( ( o * o ) * o ) * o ) * o ) )', '( o * ( o * ( o * ( ( o * o ) * o ) ) ) )', '( ( o * o ) * ( ( o * o ) * ( o * o ) ) )', '( ( o * o ) * ( o * ( ( o * o ) * o ) ) )', '( ( o * ( o * o ) ) * ( ( o * o ) * o ) )', '( ( ( ( o * o ) * o ) * ( o * o ) ) * o )', '( ( o * ( ( o * ( o * o ) ) * o ) ) * o )', '( ( ( o * ( ( o * o ) * o ) ) * o ) * o )', '( o * ( ( ( o * o ) * o ) * ( o * o ) ) )', '( ( ( ( ( o * o ) * o ) * o ) * o ) * o )', '( o * ( ( o * ( o * ( o * o ) ) ) * o ) )', '( ( ( o * o ) * ( o * o ) ) * ( o * o ) )', '( o * ( ( ( o * ( o * o ) ) * o ) * o ) )', '( o * ( o * ( o * ( o * ( o * o ) ) ) ) )', '( ( ( o * ( o * ( o * o ) ) ) * o ) * o )', '( ( o * ( o * o ) ) * ( o * ( o * o ) ) )', '( ( ( ( o * o ) * ( o * o ) ) * o ) * o )', '( ( ( o * o ) * ( o * ( o * o ) ) ) * o )', '( ( o * ( o * ( ( o * o ) * o ) ) ) * o )', '( ( o * ( ( ( o * o ) * o ) * o ) ) * o )', '( ( ( o * o ) * ( ( o * o ) * o ) ) * o )', '( ( o * o ) * ( ( o * ( o * o ) ) * o ) )', '( ( o * ( ( o * o ) * o ) ) * ( o * o ) )', '( o * ( o * ( ( o * o ) * ( o * o ) ) ) )', '( ( o * ( ( o * o ) * ( o * o ) ) ) * o )', '( o * ( o * ( ( o * ( o * o ) ) * o ) ) )', '( ( o * ( o * ( o * o ) ) ) * ( o * o ) )', '( ( o * o ) * ( ( ( o * o ) * o ) * o ) )', '( o * ( o * ( ( ( o * o ) * o ) * o ) ) )', '( o * ( ( o * ( o * o ) ) * ( o * o ) ) )', '( o * ( ( o * o ) * ( ( o * o ) * o ) ) )', '( o * ( ( o * o ) * ( o * ( o * o ) ) ) )', '( ( o * ( o * ( o * ( o * o ) ) ) ) * o )', '( o * ( ( o * ( ( o * o ) * o ) ) * o ) )', '( ( ( ( o * ( o * o ) ) * o ) * o ) * o )', '( ( ( ( o * o ) * o ) * o ) * ( o * o ) )'}