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.
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 ",".
"|"), guiones bajos ("_") y espacios (" ")."?" para ese carácter.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".
_ _
| _| _|
||_ _|
_ _
|_||_ |_
| _||_|
_ _ _
||_||_|
||_| _|
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?
Regístrate en Exercism para aprender y dominar Go con 34 conceptos165 ejercicios y mentoría humana real, todo gratis.