输入4个数字,仅通过四则运算求24,并打印。
def connect(a, b):
if isinstance(a, str):
a = [a]
if isinstance(b, str):
b = [b]
rst = []
for i in a:
for j in b:
rst.append(f'( {i} + {j})')
rst.append(f'( {i} - {j})')
rst.append(f'( {j} - {i})')
rst.append(f'( {i} * {j})')
rst.append(f'( {i} / {j})')
rst.append(f'( {j} / {i})')
return rst
import itertools
EPSILON = 1e-10
def near(a, target):
if abs(a - target * 1.0) < EPSILON:
return True
else:
return False
def calc24(n1, n2, n3, n4):
for nums in itertools.permutations([n1, n2, n3, n4]):
a = str(nums[0])
b = str(nums[1])
c = str(nums[2])
d = str(nums[3])
rst = connect(connect(connect(a, b), c), d)
for i in rst:
try:
if near(eval(i), 24):
return i
except:
continue
return False
rst = connect(connect(a, b), connect(c ,d))
for i in rst:
try:
if near(eval(i), 24):
return i
except:
continue
return False