Rutas
/
Go
Go
/
Ejercicios
/
Números OCR
Números OCR

Números OCR

Media

Introducción

Tu mejor amiga Marta acaba de conseguir el trabajo de sus sueños en el departamento de colecciones de un museo de historia local. Como sabe de tu interés por la programación, te cuenta un problema que ha surgido en el trabajo para una próxima exposición sobre la historia de la informática. El departamento de matemáticas de una universidad local había donado varias cajas de documentos impresos históricos, pero dado el mal estado en que se encuentran, se ha decidido digitalizar el texto. Sin embargo, la vieja impresora de la universidad tenía algunas peculiaridades a la hora de representar el texto, y tu amiga agradecería tu ayuda para extraer los datos con éxito.

Instrucciones

El reconocimiento óptico de caracteres u OCR es un software que convierte imágenes de texto en texto legible por máquina. Dada una cuadrícula de caracteres que representa varios dígitos, convierte la cuadrícula en un string de dígitos. Si la cuadrícula tiene varias filas de celdas, las filas deben separarse en la salida con un ",".

  • La cuadrícula está formada por una o más líneas de celdas.
  • Cada línea de la cuadrícula está formada por una o más celdas.
  • Cada celda tiene tres columnas de ancho y cuatro filas de alto (3x4) y representa un dígito.
  • Los dígitos se dibujan con barras verticales ("|"), guiones bajos ("_") y espacios (" ").

Casos límite

  • Si la entrada no tiene un tamaño válido, tu programa debe indicar que hay un error.
  • Si la entrada tiene el tamaño correcto, pero una celda no es reconocible, tu programa debe mostrar un "?" para ese carácter.

Ejemplos

La siguiente entrada (sin los comentarios) se convierte en "1234567890".

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

La siguiente entrada se convierte en "123,456,789".

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

Notas de implementación

Define una función recognizeDigit tal como se describe en el paso 1 de las instrucciones, salvo que debe reconocer los diez dígitos del 0 al 9. Elige los parámetros y los valores devueltos que prefieras, pero haz que resulte útil como subrutina para el paso 2.

Para el paso 2 define:

func Recognize(string) []string

e impleméntala usando recognizeDigit.

Los strings de entrada que se prueban aquí tienen un \n al principio de cada línea y ningún \n al final de la última línea. (Así los literales de string sin procesar resultan más legibles.)

Para obtener puntos extra, gestiona con soltura los datos mal formateados. ¿Qué deberías hacer con una celda incompleta? ¿Descartarla? ¿Rellenarla con espacios? ¿Indicarla con el carácter "?"? ¿Qué deberías hacer si el primer carácter no es \n?

Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Go Exercism

¿Listo para empezar Números OCR?

Regístrate en Exercism para aprender y dominar Go con 34 conceptos165 ejercicios y mentoría humana real, todo gratis.