travail d'un we (j'en ai big marre)

This commit is contained in:
2025-11-23 23:39:43 +01:00
parent 1ff888cf34
commit 4c486199ed
69 changed files with 208 additions and 111 deletions

View File

@@ -0,0 +1,35 @@
from typing import List
def encode(bits: List[int], polynomial: List[int], tail_bite=False):
"""Convolutionally encode the stream of bits using the generator polynomial.
If tail_bite == True, prepend the tail of the input. Otherwise use 0s to fill.
"""
if tail_bite:
tail = bits[-(len(polynomial) - 1):]
else:
tail = [0 for i in range(len(polynomial) - 1)]
full = tail + bits
polynomial.reverse() # Reverse since we're working the other direction
parity_bits = []
for i in range(len(bits)):
parity = 0
for j in range(len(polynomial)):
parity ^= full[i + j] * polynomial[j]
parity_bits.append(parity)
return parity_bits
if __name__ == "__main__":
g0 = [1, 0, 1, 1, 0, 1, 1]
g1 = [1, 1, 1, 1, 0, 0, 1]
bits = "010001001110111111110001110101101011011001100"
g0_expected = "100011100111110100110011110100000010001001011"
g1_expected = "110011100010110110110100101101011100110011011"
bits = [int(i) for i in bits]
p0 = encode(bits, g0, True)
p1 = encode(bits, g1, True)
print(g0_expected == "".join(str(i) for i in p0))
print(g1_expected == "".join(str(i) for i in p1))