[範例] 24 game solver
最近才注意到 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
Python 近期熱門文章
PTT數位生活區 即時熱門文章