Ta meilleure amie Marta vient de décrocher le poste de ses rêves : elle travaille sur les collections d'un musée d'histoire local. Sachant que la programmation t'intéresse, elle se confie à toi au sujet d'un problème rencontré au travail, pour une prochaine exposition sur l'histoire de l'informatique. Le département de mathématiques d'une université locale avait fait don de plusieurs cartons d'impressions historiques, mais vu le mauvais état des documents, il a été décidé de numériser le texte. Cependant, la vieille imprimante de l'université avait quelques bizarreries dans sa façon de représenter le texte, et ton amie aurait bien besoin de ton aide pour réussir à extraire les données.
La reconnaissance optique de caractères, ou OCR, est un logiciel qui convertit des images de texte en texte lisible par une machine.
Étant donné une grille de caractères représentant des chiffres, convertis la grille en une chaîne de chiffres.
Si la grille comporte plusieurs lignes de cellules, les lignes doivent être séparées dans la sortie par ",".
"|"), de tirets bas ("_") et d'espaces (" ")."?" pour ce caractère.L'entrée suivante (sans les commentaires) est convertie en "1234567890".
_ _ _ _ _ _ _ _ #
| _| _||_||_ |_ ||_||_|| | # Decimal numbers.
||_ _| | _||_| ||_| _||_| #
# The fourth line is always blank,
L'entrée suivante est convertie en "123,456,789".
_ _
| _| _|
||_ _|
_ _
|_||_ |_
| _||_|
_ _ _
||_||_|
||_| _|
Définis une fonction recognizeDigit comme décrit à l'étape 1 des instructions, mais fais en sorte qu'elle reconnaisse les dix chiffres, de 0 à 9. Choisis ce que tu veux comme paramètres et valeurs de retour, mais fais en sorte qu'elle soit utile comme sous-programme pour l'étape 2.
Pour l'étape 2, définis :
func Recognize(string) []string
et implémente-la en utilisant recognizeDigit.
Les strings d'entrée testés ici ont un \n au début de chaque ligne et pas de \n final sur la dernière ligne. (Ce qui donne des raw string literals lisibles.)
Pour des points bonus, gère avec élégance les données mal formatées.
Que faire d'une cellule partielle ?
L'ignorer ?
La compléter avec des espaces ?
La signaler avec un caractère "?" ?
Que faire si le premier caractère n'est pas \n ?
Inscris-toi sur Exercism pour apprendre et maîtriser Go avec 34 concepts165 exercices, et un vrai mentorat humain, le tout gratuitement.