La tua migliore amica Marta ha recentemente trovato il lavoro dei suoi sogni: lavora con le collezioni di un museo di storia locale. Sapendo quanto ti interessa la programmazione, si confida con te su un problema che ha al lavoro, in vista di una prossima mostra sulla storia dell'informatica. Il dipartimento di matematica di un'università locale aveva donato diverse scatole di stampe storiche, ma data la cattiva condizione dei documenti si è deciso di digitalizzare il testo. Tuttavia, la vecchia stampante dell'università aveva qualche stranezza nel modo in cui rappresentava il testo, e alla tua amica servirebbe il tuo aiuto per riuscire a estrarre i dati.
Il riconoscimento ottico dei caratteri, o OCR, è un software che converte immagini di testo in testo leggibile da una macchina.
Data una griglia di caratteri che rappresenta alcune cifre, converti la griglia in una stringa di cifre.
Se la griglia ha più righe di celle, le righe vanno separate nell'output con una ",".
"|"), underscore ("_") e spazi (" ")."?" per quel carattere.Il seguente input (senza i commenti) viene convertito in "1234567890".
_ _ _ _ _ _ _ _ #
| _| _||_||_ |_ ||_||_|| | # Decimal numbers.
||_ _| | _||_| ||_| _||_| #
# The fourth line is always blank,
Il seguente input viene convertito in "123,456,789".
_ _
| _| _|
||_ _|
_ _
|_||_ |_
| _||_|
_ _ _
||_||_|
||_| _|
Definisci una funzione recognizeDigit come descritto nel Passo 1 delle istruzioni, con la differenza che deve riconoscere tutte e dieci le cifre, da 0 a 9. Scegli liberamente parametri e valore restituito, ma rendila utile come subroutine per il passo 2.
Per il passo 2 definisci,
func Recognize(string) []string
e implementala usando recognizeDigit.
Le stringhe di input testate qui hanno un \n all'inizio di ogni riga e
nessun \n in fondo all'ultima riga. (Così i letterali di stringa grezzi
restano leggibili.)
Per un bonus, gestisci con eleganza i dati malformati.
Cosa faresti con una cella parziale?
La scarti?
La riempi con spazi?
La segnali con un carattere "?"?
Cosa faresti se il primo carattere non è \n?
Iscriviti a Exercism per imparare e padroneggiare Go con 34 concetti165 esercizi e il mentoring di persone reali, tutto gratis.