Parity Control

Problem #33

Tags: ascii strings binary

Who solved this?

Back to English version

Анна живёт на Алголе, а Боб на Бетельгейзе. Их разделяет огромное расстояние поскольку эти звезды находятся в разных созвездиях - Персея и Ориона.

И вот они нашли способ связи через электронную почту. Однако из-за большого расстояния некоторые буквы могут быть немного изменены при передаче. Анна предложила простой способ контроля ошибок:

Все буквы передаются обычной ASCII кодировкой, один байт на символ. Каждый байт состоит из 8 бит, однако самый старший бит не используется для букв английского языка - он всегда равен 0.

Будем устанавливать этот бит либо в 0, либо в 1 таким образом, чтобы сумма всех битов в байте была чётной (2, 4, 6 or 8). Вот как будут закодированы некоторые буквы:

символ     ascii-код     двоичное     сумма бит     закодированное   десятичное

 'A'           65        01000001         2            01000001           65
 'B'           66        01000010         2            01000010           66
 'C'           67        01000011         3            11000011          195
 '.'           46        00101110         4            00101110           46
 ' '           32        00100000         1            10100000          160

Предполагается что линия связи никогда не изменяет более одного бита в байте.

Итак, нам дано закодированное сообщение. Наша задача - проверить каждую букву и удалить те из них, которые были повреждены при передаче. Остальные нужно сконвертировать в ASCII и напечатать как символы.

Входные данные содержат байты переданного сообщения, представленные последовательностью десятичных чисел, через пробел.
Сообщение состоит только из латинских букв, цифр, и пробелов.
Конец сообщения обозначается точкой '.' - можно считать что она никогда не повреждается при передаче.
Ответ должен содержать сообщение без поврежденных байт. Старшие биты нужно сбросить и представить получившиеся байты как символы вместо чисел.

Пример:

входные данные:
65 238 236 225 46

ответ:
Ana.
You need to login to get test data and submit solution.