作者: Naomasa Numajiri
日時: 2002/5/12(01:57)
こんにちは、こんなのはどうでしょう?

お題:
    任意の値の異なる1桁の数値4つが与えられたとき、
    四則演算(+、−、×、÷)を使用して計算結果を
    10にする。

機能が不十分ですが、pythonでのサンプル
# 以下、不十分な点:
# * 「×、÷」が「+、−」より優先されていない。
# * 4つの数値が与えられた時の順番を維持したまま計算している。

例のごとく、他にGoodなものがありましたら遠慮なくよろしくです。

--^ ticket.py
def core(s,t,l):
  if len(l) > 0:
    core('%s+%d'%(s,l[0]),t+l[0],l[1:])
    core('%s-%d'%(s,l[0]),t-l[0],l[1:])
    core('%s*%d'%(s,l[0]),t*l[0],l[1:])
    if t%l[0] == 0:
      core('%s/%d'%(s,l[0]),t/l[0],l[1:])
  else:
    if t == 10: print '%d: %s'%(t,s)
def main(l):
   core(str(l[0]),l[0],l[1:])


if __name__ == '__main__':
  n = [8,4,2,1]
  main(n)
--$

実行方法:python ticket.py

実行結果
--^
10: 8+4-2*1
10: 8+4-2/1
--$


-- ぬ