Решение уравнений с python - PullRequest
0 голосов
/ 31 марта 2020

Есть такой вопрос:

1 X 2 X 3 X 4 X 5 X 6 X 7 X 8 X 9 = 1942

X = должны быть операторы x, +, -, ÷ или ничего (89, 123 может быть et c.)

Как решить эту проблему с помощью python?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 31 марта 2020

Вы можете начать с чего-то вроде этого:

from itertools import product
target = 1942
test_str = "1{0[0]}2{0[1]}3{0[2]}4{0[3]}5{0[4]}6{0[5]}7{0[6]}8{0[7]}9"
for a in product(["*", "", "+", "/", "-", ""], repeat=8): # Iterate all posibilites
  result_str = test_str.format(a)
  if eval(result_str) == target:
    print(result_str)
    break

И оптимизировать, и сделать его более расширяемым до большего числа. Но для вашей конкретной проблемы c это работает нормально. Я нашел это решение:

1*2/3+4*56*78/9

Посмотрите на eval, если вам нужна дополнительная информация.

0 голосов
/ 31 марта 2020

Вы можете использовать parser модуль из python

import parser
formula = "1 + 2 + 3 + 4 + 5 * 6 * 7 * 8 * 9"
code = parser.expr(formula).compile()
print eval(code)
...