Números OCR

Números OCR

Difícil

Introdução

A tua melhor amiga, Marta, arranjou recentemente o emprego com que sonhava, a trabalhar nas coleções de um museu de história local. Sabendo do teu interesse por programação, desabafa contigo sobre um problema no trabalho, relacionado com uma próxima exposição sobre a história da informática. O departamento de matemática de uma universidade local tinha doado várias caixas de impressos históricos, mas, dada a má condição dos documentos, decidiu-se digitalizar o texto. No entanto, a impressora antiga da universidade tinha algumas particularidades na forma como o texto era representado, e a tua amiga agradecia uma ajuda tua para extrair os dados com sucesso.

Instruções

O Reconhecimento Óptico de Carateres, ou OCR, é software que converte imagens de texto em texto legível por máquina. Dada uma grelha de carateres que representa alguns algarismos, converte a grelha numa string de algarismos. Se a grelha tiver várias linhas de células, as linhas devem ser separadas na saída por ",".

  • A grelha é composta por uma ou mais linhas de células.
  • Cada linha da grelha é composta por uma ou mais células.
  • Cada célula tem três colunas de largura e quatro linhas de altura (3x4) e representa um algarismo.
  • Os algarismos são desenhados com barras verticais ("|"), sublinhados ("_") e espaços (" ").

Casos limite

  • Se a entrada não tiver um tamanho válido, o teu programa deve indicar que há um erro.
  • Se a entrada tiver o tamanho correto, mas uma célula não for reconhecível, o teu programa deve apresentar um "?" para esse caráter.

Exemplos

A seguinte entrada (sem os comentários) é convertida em "1234567890".

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

A seguinte entrada é convertida em "123,456,789".

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

Instruções específicas do percurso

Os bytes 64 a 191 da memória linear estão reservados para a string de entrada.

Podes modificar a string de entrada no próprio local, se quiseres.

Editar via GitHub A ligação abre numa nova janela ou separador
WebAssembly Exercism

Estás pronto para começar Números OCR?

Inscreve-te no Exercism para aprenderes e dominares WebAssembly com 87 exercícios, e mentoria humana real, tudo grátis.