既製のコードと入力と期待される出力が与えられたので、入力から出力を計算する方法を見つける必要があります
これは私が与えられたコードです
3 2 4
T T
F F
T T
F F F F
T T T T
and i have been asked to calculate the logical matrix P=mn
解決済み
既製のコードと入力と期待される出力が与えられたので、入力から出力を計算する方法を見つける必要があります
これは私が与えられたコードです
3 2 4
T T
F F
T T
F F F F
T T T T
and i have been asked to calculate the logical matrix P=mn
解決済み
for i in range(len(M)):
for j in range(len(N[0])):
for k in range(len(N)):
P[i][j] += M[i][k] * N[k][j]
これは、整数を含む行列の基本スキーマです。2つのステップを実行する必要があります:1)P行列を開始します2)整数の代わりに「T」と「F」の値で操作します。
おそらく、ステップ2を実行する最も簡単な方法は、eval関数を使用することです。
T = 1 # eval('T') will be 1
F = 0 # eval('F') will be 0
そして、行を変更します:
P[i][j] += eval(M[i][k]) * eval(N[k][j])
ただし、値をPから「T」または「F」の値に変換する必要があります。お役に立てれば。
M = [['T', 'T'], ['F', 'F'], ['T', 'T']] #sample values
N = [['F', 'F', 'F', 'F'], ['T', 'T', 'T', 'T']]
T = 1
F = 0
P = []
for i in range(len(M)): #result matrix creation
P.append([None] * len(N[0]))
for i in range(len(M)):
for j in range(len(N[0])):
P[i][j] = 0 #initialization
for k in range(len(N)):
P[i][j] |= eval(M[i][k]) & eval(N[k][j]) #logical operators
P[i][j] = 'T' if P[i][j] else 'F' #conversion back to 'T' and 'F'
print P
これにより、次の出力が生成されます。
[['T', 'T', 'T', 'T'], ['F', 'F', 'F', 'F'], ['T', 'T', 'T', 'T']]
http://www.syntagmatic.net/matrix-multiplication-in-python/、特に乗算関数の仕組みを見てみましょう。