Все круглые скобки для заданного уравнения с пробелами - PullRequest
0 голосов
/ 27 октября 2019

Я хочу знать все возможные комбинации скобок для этого уравнения.

Я все готов, попробовал функцию, которая обеспечивает все сбалансированные скобки. Но проблема в том, что он не предоставляет опции для пустых пространств.

arr = []

def parens(left, right, string):
    if left == 0 and right == 0:
        arr.append(string)

    if left > 0:
        parens(left - 1, right + 1, string + "(")

    if right > 0:
        parens(left, right - 1, string + ")")

    return arr

parentheses = ""
operator = ['+', '+', '//', '+', '*']
number = ['10', '6', '2', '6', '3', '1']
parentheses = parens(len(number) , 0, parentheses)
print(parentheses)
calculation2 = ""

#parentheses = ['(((((())))))', '((((()()))))'…...]

number_index = 0
calc_index = 0

for combi_parenthesis in range(len(parentheses)):

    for parenthesis_index in range(0, 12, 2):

              calculation2 += parentheses[combi_parenthesis][parenthesis_index]

              calculation2 += number[number_index]
              number_index += 1

              calculation2 += parentheses[combi_parenthesis][parenthesis_index + 1]

              if(calc_index <= 4):

                calculation2 += operator[calc_index]
                calc_index += 1

    print(calculation2)

    try:
        b = eval(calculation2)
        output2 = calculation2 + "=" + str(b)  # converts int
        print(output2)
    except SyntaxError:
        pass

    b = ""
    calculation2 = ""
    number_index = 0
    calc_index = 0

Один из примеров - это (10) + (6) + (2) // (6) + (3) *(1) = 19, но проблема в том, что я не получаю комбинации, например, с меньшим количеством скобок, например (10 + 6) + 2 // 6 + (3 * 1).

Мне нужны функции, которыеполучает мне комбинации скобок с пустыми пробелами, как. ['(', '', '', '', '', ')', '', ...]. Таким образом, весь набор скобок со всеми пробелами комбинации. Спасибо за ваше время, и я надеюсь, что вы можете мне помочь.

...