| Главная | Разбор задач | Книги, статьи, алгоритмы | Ссылки | Обо мне | Гостевая | Форум |

КВН(#1012) Исправления(#1014)

#1013

Задача g6_1013: Коррекция кода.

По некоторому каналу связи передается сообщение, имеющее вид последовательности нулей и единиц. Из-за помех возможен ошибочный прием некоторых сигналов: нуль может быть воспринят как единица и наоборот. Для повышения вероятности правильного приема сигналов было решено передавать каждый сигнал трижды. Теперь передатчик вместо 1 всегда передает 111, а вместо 0 всегда 000.

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

Формат входных данных
Во входном файле одна строка, в которой могут быть только символы "0" и "1". Длина строки - число, кратное трем, большее двух и меньшее 760.

Формат выходных данных
Вы должны вывести в одну строку раскодированное сообщение.

Пример ввода
110111010001

Правильный вывод для примера
1100

Решение g6_1013:
Это задача B с командного турнира по программированию "ИМ-Y2K" в СамГУ.
Она тоже простая. Достаточно организовать два цикла: один вида
repeat ... until EOF
и другой, вложенный в него
for x := 1 to 3 do ...
В начале первого цикла мы обнуляем значение некоторой переменной, а во втором цикле, если нам встретилась "1", увеличиваем значение этой переменной на 1. По окончании работы цикла for проверяем: если значение переменной равно 2 или 3, то выводим "1", если 0 или 1 то "0".
Просто!