Tu mejor amiga Marta acaba de conseguir el trabajo de sus sueños trabajando con las colecciones de un museo de historia local. Como sabe que te interesa la programación, te confía un problema que tiene en el trabajo para una próxima exposición sobre la historia de la computación. El departamento de matemáticas de una universidad local había donado varias cajas de impresiones históricas, pero dado el mal estado de los documentos, se tomó la decisión de digitalizar el texto. Sin embargo, la vieja impresora de la universidad tenía algunas peculiaridades en cómo representaba el texto, y tu amiga podría usar 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 representan algunos 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 una ",".
"|"), 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 como se describe en el Paso 1 de las instrucciones, pero haz que reconozca los diez dígitos, del 0 al 9. Elige a tu gusto los parámetros y los valores que devuelve, pero haz que sea ú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. (Esto hace que los literales de string sin procesar sean más legibles.)
Como puntos extra, maneja con elegancia los datos mal formateados.
¿Qué deberías hacer con una celda parcial?
¿Descartarla?
¿Rellenarla con espacios?
¿Reportarla 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.