Версия для печати
Убрать все задачи
Банки, пытаясь увеличить свою прибыль, попросили инженеров разработать
сканер, который автоматически считывает номера чеков. Известно, что любой
чек имеет девятизначный номер и для каждого номера чека выполняется
следующее условие: (d
1 +2d
2 + ... +9d
9) mod 11 = 0, где d
i
равно i-й цифре номера (цифры нумеруются справа налево: d
9d
8d
7d
6d
5d
4d
3d
2d
1).
Сканер, считывая номер, преобразовывает горизонтальные и вертикальные
линии в символы | (ASCII-код 124) и _ (ASCII-код 95) соответственно. В
результате сканирования выдается картинка, составленная из этих символов и
пробелов. Пример правильного изображения цифр после сканирования
приведен в примере входного файла.
К сожалению, иногда сканер допускает ошибки, и некоторые линии могут
пропадать. Вы должны написать программу, которая восстанавливает исходный
номер чека, считая выполненными следующие условия:
если отсканированное число является корректным номером чека, то это и
есть исходный номер;
испорчено не более одной цифры;
при сканировании не появляются дополнительные линии.
Входные данные
Входной файл содержит отсканированную картинку в виде 3 строк по 27
символов в каждой. Изображение каждой цифры занимает квадрат размером
3 × 3 символа.
Выходные данные
Запишите в выходной файл либо корректный номер чека, либо строку
«failure», если номер восстановить нельзя, либо строку «ambiguous», если
существует более одного решения.
Пример входного файла
_ _ _ _ _ _ _
| _| _||_||_ |_ ||_||_|
| |_ _| | _||_| ||_| _|
Пример выходного файла
123456789
Решение