hamming/matrix.py
2023-11-03 16:03:15 -07:00

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))