Скачиваний:
7
Добавлен:
17.06.2023
Размер:
1.22 Кб
Скачать
def hamming_decoder_15_11():
k, n, decoding_message = 15, 11, []


def decode_table(msg_now, u):
decoding_message.append(u)
print(f'{msg_now}\t {b[0]} {b[1]} {b[2]} {b[3]}\t\t{int(S)}\t{u}')


message = list(map(int, input('Put your coded message here -> ').split())) + [0] * k
error_position = int(input('Enter the error position: '))
message[error_position] = (message[error_position] + 1) % 2
r = k - n
b, S, output = [0] * r, 0, '-' # b - регистр на 4 символа, S - логическое "И", u - символ на выходе декодера
print(f'in\t b0 b1 b2 b3\tS\tout')
print(f'{output}\t {b[0]} {b[1]} {b[2]} {b[3]}\t\t{int(S)}\t{output}')
for i in range(k * 2):
t_sum = (b[3]) % 2
b[3] = b[2]
b[2] = b[1]
b[1] = (b[0] + t_sum) % 2
b[0] = (t_sum + message[i]) % 2
if i >= k:
output = (message[i - k] + S) % 2
S = b[0] and not b[1] and not b[2] and b[3]
decode_table(message[i], output)
print()
print('Error:\t',' ' * (error_position * 2 - 1), '|')
print('Input:\t', *message[:15])
print('Output:\t', *decoding_message[15:])


hamming_decoder_15_11()
Соседние файлы в папке практика