Код 39 , розроблений у 1974 році, є однією з найбільш часто використовуваних символогій або типів штрих-кодів, хоча саме система UPC / EAN найчастіше спостерігається в роздрібних продажах. Штрих-коди коду 39 можуть кодувати великі літери, цифри та деякі символи і є дрібницею для друку з комп'ютерного програмного забезпечення за допомогою спеціального шрифту. Це призвело до їх широкого комерційного та промислового використання (наприклад, значки компанії ID, відстеження активів, автоматизація фабрики).
Створіть найкоротшу програму або функцію для зчитування штрих-коду коду 39 у будь-якій орієнтації із зображення зображення в градаціях сірого 512x512 пікселів; штрих-код може бути вирівняний не горизонтально, ні вертикально.
- Ваша програма повинна приймати стандартний формат файлу зображень і виробляти дані, закодовані у штрих-коді, як його стандартне значення виводу або повернення (не враховуючи жодного символу початку / зупинки).
- Жодне зображення не містить більше одного дійсного штрих-коду коду 39, а жоден штрих-код не кодує символу пробілу (ASCII 32).
- Якщо на зображенні не відображається дійсний штрих-код Code 39, програма повинна вивести єдиний знак питання (
?).
Я підготував реалізацію посилань на JavaScript та тестовий набір зображень у форматі PNG, як із дійсними штрих-кодами, так і без них. Референтна реалізація, яка не дає лише 3 з 46 тестових випадків в останніх веб-браузерах, має на меті показати один можливий алгоритм декодування, не суворо відповідати вищевказаній специфікації.
Дійсне подання проходить щонайменше 80% цих тестів (37/46) і займає не більше однієї хвилини для кожного зображення на досить швидкому процесорі (наприклад, чотирьохядерний ядро 2,6 ГГц). Моя контрольна реалізація проходить 93% тестів і обробляє кожне зображення протягом 10 секунд (на моєму настільному ПК, на якому працює Google Chrome).
(Це питання було запропоновано в Meta 28 травня 2011 р.)