Олимпиадный тренинг

Задача . 21704


Задача

Темы:
Код Хэмминга позволяет исправить одну ошибку и обнаружить две. Признаком ошибки (или ошибок) служит несовпадение контрольных битов со значением, которые вычислено по полученным битам данных. Например, пусть приняты данные
По битам данных (с номерами 3, 5, 6 и 7) рассчитываем значения контрольных битов, которые получаются при безошибочной передаче:
      бит 1 = (бит 3 + бит 5 + бит 7) mod 2 = (1 + 1 + 0) mod 2 = 0 
      бит 2 = (бит 3 + бит 6 + бит 7) mod 2 = (1 + 1 + 0) mod 2 = 0 ≠ 1 
      бит 4 = (бит 5 + бит 6 + бит 7) mod 2 = (1 + 1 + 0) mod 2 = 0 ≠ 1
Видим, что полученные значения контрольных битов 2 и 4 не совпадают с вычисленными, поэтому при передаче были ошибки. Если предположить, что была только одна ошибка, то номер ошибочного бита вычисляется как сумма номером несовпавших контрольных битов, в данном примере это 2 + 4 = 6. Таким образом, 6-й бит принят неверно, исправленные данные выглядят так:
 Это код Хэмминга для числа 11002 = 12.
Задание: устройство приняло приведенные ниже 7-битовые блоки, в каждом из которых не более одной ошибки. Восстановите правильные данные и запишите в десятичной системе счисления, через запятую, числовую последовательность, которую пытались передать

0001001 0001011 0101101 0101011

time 1000 ms
memory 32 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя