問題は、ツインパン天びんで与えられた重みのセットで目的の値のターゲットを測定できるかどうかを判断する再帰関数「defEhMensuravel(target、weight)」を作成することです。使用可能な重みは、リスト「重み」に格納されます。おもりは、ターゲットウェイトが占めるプレートの反対側、ターゲットウェイトの同じプレート、または使用しないプレートに配置できることを思い出してください。
私が作成したコードはそれですが、何かが間違っています。
weights = [1, 2, 3]
matrix = []
def createaMatrix():
for i in range(len(weights)):
matrix.append([])
for j in range(3):
for i in range(len(weights)):
if j==0:
matrix[j].append(weights[i])
if j==1:
matrix[j].append(-weights[i])
if j==2:
matrix[j].append(0)
createMatrix()
def EhMensuravel(entry, weights, final_weight=0):
if final_weight == entry:
return True
for j in range(3):
for i in range(len(weight)):
final_weight += matrix[i][j]
return EhMensuravel(entry, weight[1:], final_weight)
編集:たとえば、試してみるprint EhMensuravel(4, weights)
と、出力は次のようになります。
>>>
1
2
3
None
>>>