Login and get codingYour task is to write a simple math equation solver. Given a list of operators and an integer result, find all the number combinations that can be used with operators to produce the result.
Numbers must be integers in the range of 1 to 9 and no number may be repeated in a solution. The solver should return a list of solutions, each solution a list of integers which produce the result with the given operators.
Consider the following examples:
>>> # i1 + i2 = 6
>>> list(find_all_solutions(["+"], 6))
[
[1, 5], # 1 + 5 = 6
[2, 4], # 2 + 4 = 6
[4, 2], # 4 + 2 = 6
[5, 1], # 5 + 1 = 6
# 3 + 3 is not valid, as each number can only be used once
]
>>> # i1 - i2 = 5
>>> list(find_all_solutions(["-"], 5))
[
[6, 1], # 6 - 1 = 5
[7, 2], # 7 - 2 = 5
[8, 3], # 8 - 3 = 5
[9, 4], # 9 - 4 = 5
]
>>> # i1 * i2 * i3 + i4 = 181
>>> list(find_all_solutions(["*", "*", "+"], 181))
[
[4, 5, 9, 1], # 4 * 5 * 9 + 1 = 181
[4, 9, 5, 1], # 4 * 9 * 5 + 1 = 181
[5, 4, 9, 1], # 5 * 4 * 9 + 1 = 181
[5, 9, 4, 1], # 5 * 9 * 4 + 1 = 181
[9, 4, 5, 1], # 9 * 4 * 5 + 1 = 181
[9, 5, 4, 1], # 9 * 5 * 4 + 1 = 181
]- Allowed operations are addition
+
, subtraction-
or multiplication*
.- Result is always an
int
(positive or negative).-
i1, i2, i3 [...]
areint
s between 1 and 9 (included) but can only be used once in a solution.Task
- Write a function that receives a list of
operators
&result
and returns all possible solutions as alist
/ generator of alist
ofint
as shown above.- Make sure to implement the order of operations correctly (multiplication before addition or subtraction).
- Using operators other than
+
,-
or*
should raise aValueError
.- Using non
int
as aresult
should raiseValueError
.Good luck and keep calm and code in Python!
34 out of 35 users completed this Bite.
Will you be the 35th person to crack this Bite?
Resolution time: ~83 min. (avg. submissions of 5-240 min.)