Описание задачи
Необходимо обработать список штрих-кодов: отфильтровать невалидные, восстановить повреждённые и найти самые частые.
Требования к решению
- Считать список штрих-кодов из входа
- Отфильтровать невалидные коды:
- Неверная длина (должна быть фиксированной)
- Недопустимые символы (только цифры и
?) - Не делятся на 11 (контрольная сумма)
- Восстановить повреждённые коды (с символом
?) — подобрать цифру так, чтобы код стал валидным - Подсчитать частоту каждого валидного кода
- Вывести топ-10 самых частых кодов в порядке убывания
Формат входных данных
Последовательность строк, каждая из которых — штрих-код. Код может содержать:
- Цифры
0-9 - Символ
?— обозначает повреждённую позицию (ровно одна)
Формат выходных данных
Топ-10 самых частых валидных штрих-кодов в формате:
код: Nx
где N — количество вхождений.
Пример
Input
813?2
91476
45738
45738
91?76
Output
91476: 2x
45738: 2x
81312: 1x
Объяснение: Код 813?2 восстановлен как 81312 (делится на
11). Код 91?76 восстановлен как 91476. Оба кода 91476 и
45738 встретились по 2 раза.
Ключевые моменты
- Делимость на 11 — стандартная проверка контрольной суммы
- При восстановлении
?перебираем цифры 0-9 и проверяем делимость - Сортировка по частоте — от большего к меньшему
- При равной частоте порядок может быть произвольным или лексикографическим