Your best friend Marta recently landed their dream job working with a local history museum's collections. Knowing of your interests in programming, they confide in you about an issue at work for an upcoming exhibit on computing history. A local university's math department had donated several boxes of historical printouts, but given the poor condition of the documents, the decision has been made to digitize the text. However, the university's old printer had some quirks in how text was represented, and your friend could use your help to extract the data successfully.
Optical Character Recognition or OCR is software that converts images of text into machine-readable text.
Given a grid of characters representing some digits, convert the grid to a string of digits.
If the grid has multiple rows of cells, the rows should be separated in the output with a ",".
"|"), underscores ("_"), and spaces (" ")."?" for that character.The following input (without the comments) is converted to "1234567890".
_ _ _ _ _ _ _ _ #
| _| _||_||_ |_ ||_||_|| | # Decimal numbers.
||_ _| | _||_| ||_| _||_| #
# The fourth line is always blank,
The following input is converted to "123,456,789".
_ _
| _| _|
||_ _|
_ _
|_||_ |_
| _||_|
_ _ _
||_||_|
||_| _|
Define a function recognizeDigit as described in Step 1 of instructions except make it recognize all ten digits 0 to 9. Pick what you like for parameters and return values but make it useful as a subroutine for step 2.
For Step 2 define,
func Recognize(string) []string
and implement it using recognizeDigit.
Input strings tested here have a \n at the beginning of each line and no trailing \n on the last line. (This makes for readable raw string literals.)
For bonus points, gracefully handle misformatted data.
What should you do with a partial cell?
Discard it?
Pad with spaces?
Report it with a "?" character?
What should you do if the first character is not \n?
Sign up to Exercism to learn and master Go with 34 concepts165 exercises, and real human mentoring, all for free.