Я пытался сделать решатель обратного отсчета (правила здесь ). Проблема в том, что моя программа печатает решения только для некоторых целей, а для других она не дает всех возможных решений.
Вот где, я думаю, заключается проблема. Соль является результатом расчета. Мне не нужны решения, в которых мы делаем дроби, которые нельзя отменить, например, 4/3 и c.
def check_rules(Sol):
if Sol < 0:
return False
elif isinstance(Sol, float) == True and Sol.is_integer() == False: #for eliminating such fractions.
return False
Эта функция вызывается, когда я решаю постфиксные выражения с помощью этой функции. Может быть, я исключаю некоторые выражения, когда я не должен из-за неуместного для или если. Я не могу понять это.
def magic (List, targ):
stack=[]
for i in List:
if i not in operators:
stack.append(i)
elif i in operators:
num2=stack.pop()
num1=stack.pop()
exp=num1+i+num2
if check_divZero(i, num2) == False:
break
sol=eval(exp)
if check_rules(sol) == False:
break
stack.append(str(sol))
if float(stack[-1]) == targ:
return List