Мир Хэмминга (НТО 21/22 :: ТБС)
Легенда
Вы — учёный, работающий в секретной лаборатории. Во время очередного эксперимента с квантовой передачей данных ваша команда случайно создаёт некий «портал», излучающий радиоволны. Подключив приёмник, вы заметили, что сигнал из портала представляет собой повторяющуюся длинную строку двоичного кода. В ходе анализа выяснилось, что эта строка представляет собой сообщение, закодированное кодом Хэмминга (8, 4) со следующей порождающей матрицей:
0 1 1 1 1 0 0 0
1 0 1 1 0 1 0 0
1 1 0 1 0 0 1 0
1 1 1 0 0 0 0 1
Вы решили попытаться наладить общение с источником сигнала. Но для этого вам необходимо написать программу, которая поможет декодировать и кодировать входящие и исходящие сообщения.
Ваша задача: написать две функции. Первая функция – encoder, которая будет кодировать Ваш ответ. Вторая – decoder, которая будет декодировать приходящие сообщения. Учтите, что в таком канале могут присутствовать однократные ошибки, ваша функция decoder должна верно их исправлять. Длины сообщений не превышают 60 байт.
Сигнатуры функций будут приведены в поле ввода решения после выбора нужного вам языка. Ваши функции не должны выводить что-либо в стандартные потоки вывода и ошибок. В ограничение на время выполнения входит время работы вспомогательного кода, но оно крайне незначительно.
Итоговый балл за задачу состоит из суммы результатов выполнения ваших функций на наборе тестов. За корректную работу encoder вы получите 1/3 от балла за отдельный тест, за decoder – 2/3.
Time Limit: 2 секунды
Memory Limit: 256 MB