68 lines
1.3 KiB
Python
68 lines
1.3 KiB
Python
|
|
|
|
|
|
def cij(i, j, a, b):
|
|
assert len(a[0]) == len(b)
|
|
N = len(b)
|
|
#print("sum")
|
|
#[print(f" a[{i}][{n}] * b[{n}][{j}]") for n in range(N)]
|
|
return sum(
|
|
a[i][n] * b[n][j]
|
|
for n in range(N)
|
|
)
|
|
|
|
def mult(a, b):
|
|
return [
|
|
[
|
|
cij(i, j, a, b)
|
|
for j in range(len(b[0]))
|
|
]
|
|
for i in range(len(a))
|
|
]
|
|
|
|
genmat1 = [[1, 0, 0, 0, 1, 1, 0],
|
|
[0, 1, 0, 0, 1, 0, 1],
|
|
[0, 0, 1, 0, 0, 1, 1],
|
|
[0, 0, 0, 1, 1, 1, 1]]
|
|
|
|
genmat = [[1, 1, 1, 0, 0, 0, 0, 1],
|
|
[1, 0, 0, 1, 1, 0, 0, 1],
|
|
[0, 1, 0, 1, 0, 1, 0, 1],
|
|
[1, 1, 0, 1, 0, 0, 1, 0]]
|
|
|
|
a = [[1, 0, 1, 1]]
|
|
|
|
def gendat():
|
|
def do(i):
|
|
for bit in reversed(range(4)):
|
|
b = i >> bit & 1
|
|
yield b
|
|
for i in range(16):
|
|
yield [list(do(i))]
|
|
|
|
for mat in gendat():
|
|
m2 = mult(mat, genmat1)
|
|
print(m2, end=' ')
|
|
ext = sum(m2[0])
|
|
print(ext, ext % 2, end=' | ')
|
|
ext1 = sum(mat[0][0:3])
|
|
print(ext1, ext1 % 2)
|
|
|
|
# [1, 0, 1, 1, 2, 3, 2, 3]
|
|
|
|
chkmat = [[1, 0, 1, 0, 1, 0, 1, 0],
|
|
[0, 1, 1, 0, 0, 1, 1, 0],
|
|
[0, 0, 0, 1, 1, 1, 1, 0],
|
|
[1, 1, 1, 1, 1, 1, 1, 1]]
|
|
|
|
b = [[0],
|
|
[1],
|
|
[1],
|
|
[0],
|
|
[0],
|
|
[1],
|
|
[1],
|
|
[0]]
|
|
|
|
#print(mult(chkmat, b))
|