PP.*_*PP. 29
最简单的方法之一是在BASH中使用shell扩展:
#!/bin/sh
for i in 1{,+,*}2{,+,*}3{,+,*}4{,+,*}5{,+,*}6{,+,*}7{,+,*}8{,+,*}9; do
if [ $(( $i )) == 2097 ]; then
echo $i = 2097
fi
done
这使:
$ sh -c '. ./testequation.sh' 12*34+5*6*7*8+9 = 2097 12*3*45+6*78+9 = 2097 1+2+345*6+7+8+9 = 2097
Joh*_*ooy 12
没有那么多的解决方案 - 这个python程序需要一秒钟才能完成所有这些解决方案
from itertools import product
for q in product(("","+","*"), repeat=8):
e = ''.join(i+j for i,j in zip('12345678',q))+'9'
print e,'=',eval(e)
Run Code Online (Sandbox Code Playgroud)
这是一个运行grep的示例
$ python sums.py | grep 2097
12*34+5*6*7*8+9 = 2097
12*3*45+6*78+9 = 2097
1+2+345*6+7+8+9 = 2097
Run Code Online (Sandbox Code Playgroud)
一般解决方案是简单的修改
from itertools import product
def f(seq):
for q in product(("","+","*"), repeat=len(seq)-1):
e = ''.join(i+j for i,j in zip(seq[:-1],q))+seq[-1]
print e,'=',eval(e)
Run Code Online (Sandbox Code Playgroud)