Задать вопрос
@Zebren
Начинающий FrontEnd-разработчик

Как сделать мажорирование и расшифровку ошибочного сообщения?

Задача выглядит так:

Пусть по некоторому каналу связи передается сообщение, имеющее вид последовательности нулей и единиц (или точек и тире). Из-за помех возможен ошибочный прием некоторых сигналов: нуль может быть воспринят как единица и наоборот. Для повышения надежности передачи сообщений применяют мажорирование, когда каждый сигнал троируется (например 101 преобразуется в 111000111). При расшифровке три последовательные цифры заменяются той цифрой, которая среди этой тройки встречается по крайней мере дважды. Написать программу шифровки и расшифровки мажорированных сообщений.

Получилось сделать троение чисел, не могу сделать алгоритм выбора двух чисел из 3. Возьмем к примеру 101 110 011 (Без пробелов). Помогите получить 1 1 1 (Без пробелов). Хочу получить универсальный алгоритм, чтобы можно было любые растроенные числа написать.
  • Вопрос задан
  • 163 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@ABaytin
Подходит для любых растроенных символов.
private IEnumerable<string> TakeByThree(string input)
{
    var remains = input;
    while (!string.IsNullOrEmpty(remains) && remains.Length >= 3)
    {
        yield return remains.Substring(0, 3);
        remains = remains.Substring(3);
    }
}

public string Contract(string input) =>
    new string(TakeByThree(input).Select(t => t[0] == t[1] || t[0] == t[2] ? t[0] : t[1]).ToArray());
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 янв. 2025, в 12:21
90000 руб./за проект
23 янв. 2025, в 12:08
10000 руб./за проект
23 янв. 2025, в 12:07
20000 руб./за проект