クラスソリューション(オブジェクト): DEF diffWaysToCompute(セルフ、INPUT): 「」「 :タイプのINPUT:STR :RTYPE:リスト[ INT ] 」「」 #機能カルク算術演算を行い、 #辞書メモレコードは、いくつかの結果となっている、キー入力文字列のために、全ての組み合わせのための値の算出結果 #が入力を横断し、境界としてオペレータに、左右の全ての組み合わせのリターンを得るために、計算、および順列を計算する #再帰デジタル入力境界を IF input.isdigit (): 戻り [ INT (INPUT)] メモ = } { RES = [] IF INPUT にメモ: 戻りメモ[INPUT] 以下のための私に:範囲(LEN(入力)) OP = 入力[i]の 場合 OPないで " + - * " : 続ける 左 = self.diffWaysToCompute(入力[した:i]) 右 = self.diffWaysToCompute(入力[I + 1 :]) のための NUM1 で左: 用 NUM2 で右: res.append(self.calc(NUM1、NUM2、OP)) メモ[入力] =のRESは 戻りRESを DEF計算値(自己、NUM1、NUM2、OP): もし OP == " + " : リターン NUM1 + NUM2の elifのOP == " - " : リターン num1- num2の 他: リターン NUM1の*のNUM2