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.
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 ",".
"|"), sublinhados ("_") e espaços (" ")."?" para esse caráter.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".
_ _
| _| _|
||_ _|
_ _
|_||_ |_
| _||_|
_ _ _
||_||_|
||_| _|
Define uma função recognizeDigit como descrito no Passo 1 das instruções, mas faz com que reconheça todos os dez algarismos, de 0 a 9. Escolhe os parâmetros e os valores devolvidos que quiseres, mas torna-a útil como sub-rotina para o passo 2.
Para o passo 2, define
func Recognize(string) []string
e implementa-a usando recognizeDigit.
As strings de entrada testadas aqui têm um \n no início de cada linha e não têm \n no fim da última linha. (Isto torna os literais de string brutos mais legíveis.)
Para pontos extra, lida com dados mal formatados de forma elegante.
O que deves fazer com uma célula parcial?
Descartá-la?
Preenchê-la com espaços?
Assinalá-la com o caráter "?"?
O que deves fazer se o primeiro caráter não for \n?
Inscreve-te no Exercism para aprenderes e dominares Go com 34 conceitos165 exercícios, e mentoria humana real, tudo grátis.