[範例] 24 game solver

看板Python作者 (金が信念! XD)時間19年前 (2005/12/31 07:22), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
最近才注意到 python 開版了, 所以也來野人獻曝一下. :p #!/usr/bin/python ops = [('+', lambda a, b: (a[0] * b[1] + a[1] * b[0], a[1] * b[1])), ('-', lambda a, b: (a[0] * b[1] - a[1] * b[0], a[1] * b[1])), ('*', lambda a, b: (a[0] * b[0], a[1] * b[1])), ('/', lambda a, b: (a[0] * b[1], a[1] * b[0]))] target = (24, 1) def dump(path): if type(path[-1]) == str: p = path[:-1] print '(', p = dump(p) print path[-1], p = dump(p) print ')', return p else: print path[-1], return path[:-1] def solve(nums, path, stack): if (len(nums) == 0 and len(stack) == 1 and target[0] * stack[0][1] == target[1] * stack[0][0] and stack[0][1] != 0): dump (path) print for i in range(len(nums)): solve (nums[:i] + nums[i+1:], path + [nums[i]], stack + [(nums[i],1)]) if len(stack) >= 2: for op in ops: solve (nums, path + [op[0]], stack[:-2] + [op[1](stack[-1], stack[-2])]) def main(): nums = raw_input() nums = map(int, nums.split()) solve(nums, [], []) if __name__ == '__main__': main() -- 「ふ…ふざけるな!そんあ短い咒文で、魔法を起動できるわけないだろうが! お前わマウゼルの神に逆らう氣なのか?!傲慢な~」 「失禮致しました、誠實に全力でお相手致します。 第一戰術級‧軍用攻性魔法‧出よ、武雷神〈トール〉!」 〈スクラップド‧プリンセス〉 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.224.64

12/31 16:08, , 1F
歡迎嗆人王加入!
12/31 16:08, 1F
文章代碼(AID): #13jZ6WFF (Python)
文章代碼(AID): #13jZ6WFF (Python)