在123456789之间加入加减号得到100(Prolog 程序)
Jun 17th, 2008 作者 hugsnow
本文由抱雪(hugsnow)原创,转载请注明来源 http://www.luoxf.net/
分析:先把123456789拆分成若干个数,分析可知不能拆分为3位以上的数,这些数可正可负,如果这些数的和是100则打印之,swi-prolog程序如下:
如题:在123456789之间加入任意个加减号使算式结果为100。如:
1+2+3-4+5+6+78+9 =100
1+2+34-5+67-8+9 =100
更多答案和程序:
1+23-4+5+6+78-9 =100
1+23-4+56+7+8+9 =100
12+3+4+5-6-7+89 =100
12+3-4+5+67+8+9 =100
12-3-4+5-6+7+89 =100
123+4-5+67-89 =100
123+45-67+8-9 =100
123-4-5-6-7+8-9 =100
123-45-67+89 =100
程序:1~9之间共有8个位置,可以放”+”,”-”,空格三者之一,对这8个位置穷举即可
#!/usr/bin/env/python
ysf=['+','-','']
for i in ysf:
for j in ysf:
for k in ysf:
for l in ysf:
for m in ysf:
for n in ysf:
for o in ysf:
for p in ysf:
bds=”1%s2%s3%s4%s5%s6%s7%s8%s9″ % (i,j,k,l,m,n,o,p)
if (eval(bds) == 100):
print bds,”=100″