小町算 #2
ちょ、さいとうさんのチェック早い。ということで、とりあえず電卓版を晒しておく。あいかわらず整数演算なのでダメダメなんですが。
import sys import operator def join(a, b): return int(str(a) + str(b)) OPERATORS = { '+': operator.add, '-': operator.sub, '*': operator.mul, '/': operator.div, '' : join } def komachi2(numbers, result): calculated = (str(numbers[0]), numbers[0]) return (exp[0] for exp in list_exp(calculated, numbers[1:]) if exp[1] == result) def list_exp(calculated, numbers): if len(numbers) == 0: yield calculated else: for op, opfunc in OPERATORS.iteritems(): new_calculated = (calculated[0] + op + str(numbers[0]), opfunc(calculated[1], numbers[0])) for exp in list_exp(new_calculated, numbers[1:]): yield exp def main(): for exp in komachi2(range(1, 9 + 1), 100): print exp if __name__ == '__main__': main()
追記
整数演算以前のところで間違えているし。orz