Треки
/
Go
Go
/
Вправи
/
Числа OCR
Числа OCR

Числа OCR

Середня

Вступ

Наша найкраща подруга Марта нещодавно отримала роботу своєї мрії: вона працює з колекціями місцевого історичного музею. Знаючи про наше зацікавлення програмуванням, вона розповідає нам про проблему на роботі, повʼязану з майбутньою виставкою про історію обчислювальної техніки. Кафедра математики місцевого університету передала кілька коробок історичних роздруківок, але через поганий стан документів було вирішено оцифрувати текст. Однак старий університетський принтер мав деякі дивацтва в тому, як він представляв текст, тож наша допомога стала б у пригоді нашій подрузі, щоб успішно видобути дані.

Вказівки

Оптичне розпізнавання символів, або OCR, - це програмне забезпечення, яке перетворює зображення тексту на текст, який може прочитати компʼютер. Перетворіть сітку символів, що зображують якісь цифри, на рядок тексту (англ. string) із цих цифр. Якщо сітка містить кілька ліній комірок, ці лінії потрібно розділити у виводі за допомогою ",".

  • Сітка складається з однієї або більше ліній комірок.
  • Кожна лінія сітки складається з однієї або більше комірок.
  • Кожна комірка має три стовпці завширшки і чотири рядки заввишки (3x4) і зображує одну цифру.
  • Цифри намальовані за допомогою вертикальних рисок ("|"), підкреслень ("_") і пробілів (" ").

Крайні випадки

  • Якщо вхідні дані мають неправильний розмір, ваша програма має повідомити про помилку.
  • Якщо вхідні дані мають правильний розмір, але якусь комірку не вдається розпізнати, ваша програма має вивести "?" замість цього символу.

Приклади

Наведені нижче вхідні дані (без коментарів) перетворюються на "1234567890".

      _  _     _  _  _  _  _  _  #
    | _| _||_||_ |_   ||_||_|| | # Decimal numbers.
    ||_  _|  | _||_|  ||_| _||_| #
                                 # The fourth line is always blank,

Наведені нижче вхідні дані перетворюються на "123,456,789".

    _  _ 
  | _| _|
  ||_  _|
         
    _  _ 
|_||_ |_ 
  | _||_|
         
 _  _  _ 
  ||_||_|
  ||_| _|
         

Примітки щодо реалізації

Визначте функцію recognizeDigit так, як описано в кроці 1 інструкцій, але зробіть так, щоб вона розпізнавала всі десять цифр від 0 до 9. Параметри й повернені значення виберіть на власний розсуд, але подбайте, щоб її можна було використати як підпрограму на кроці 2.

Для кроку 2 визначте,

func Recognize(string) []string

і реалізуйте її за допомогою recognizeDigit.

Вхідні рядки тексту (англ. string), які тут перевіряються, мають \n на початку кожного рядка й не мають \n у кінці останнього рядка. (Так сирі рядкові літерали читаються зручніше.)

За додаткові бали акуратно обробіть дані з порушеним форматуванням. Що робити з неповною коміркою? Відкинути її? Доповнити пробілами? Позначити її символом "?"? А що робити, якщо перший символ не \n?

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Go Exercism

Час розпочати Числа OCR?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Go, а також 34 концепції165 вправ та справжнє наставництво від людей, і все це безкоштовно.