符号化試験式の最大化問題を解く


プログラマ式の最大化(level 2)回答
from itertools import permutations

def solution(express):
    v = ['*','+','-']
    base = list(permutations(v,3))
    m = 0
    for data in base:
        expression = express[:]
        expression = expression.split(data[0])
        for j in range(len(expression)):
            expression[j] = list(map(eval, expression[j].split(data[1])))
        for i in range(len(expression)):
            result1 = expression[i][0]
            for j in range(1, len(expression[i])):
                if data[1] == '+':
                    result1 += expression[i][j]
                if data[1] == '-':
                    result1 -= expression[i][j]
                if data[1] == '*':
                    result1 *= expression[i][j]
            expression[i] = result1
        result2 = expression[0]
        for i in range(1, len(expression)):
            if data[0] == '*':
                result2 *= expression[i]    
            if data[0] == '+':
                result2 += expression[i] 
            if data[0] == '-':
                result2 -= expression[i]
        m = max(m, abs(result2))
    return m
私の解答は公式最大化ではなく、随意に最大化まで解答し、説明もよく分からないので、この解答は繰り返しの文で計算されたものと解釈できます.
まず,この問題をeval文字列に変換して演算する関数を発見し,これはよい.
問題では、各優先演算記号を()で囲み、evalを使えばいいのですが、手間がかかります.
それでも意味があって良い関数を見つけた.