Η καλύτερή σου φίλη, η Marta, πρόσφατα έπιασε τη δουλειά των ονείρων της, δουλεύοντας με τις συλλογές ενός τοπικού μουσείου ιστορίας. Γνωρίζοντας το ενδιαφέρον σου για τον προγραμματισμό, σου εκμυστηρεύεται ένα ζήτημα στη δουλειά για μια επερχόμενη έκθεση πάνω στην ιστορία των υπολογιστών. Το τμήμα μαθηματικών ενός τοπικού πανεπιστημίου είχε δωρίσει αρκετά κουτιά με ιστορικές εκτυπώσεις, αλλά δεδομένης της κακής κατάστασης των εγγράφων, πάρθηκε η απόφαση να ψηφιοποιηθεί το κείμενο. Ωστόσο, ο παλιός εκτυπωτής του πανεπιστημίου είχε κάποιες ιδιαιτερότητες στον τρόπο που αναπαριστούσε το κείμενο, και η φίλη σου θα χρειαζόταν τη βοήθειά σου για να εξαγάγει με επιτυχία τα δεδομένα.
Η Οπτική Αναγνώριση Χαρακτήρων, ή OCR, είναι λογισμικό που μετατρέπει εικόνες κειμένου σε κείμενο αναγνώσιμο από μηχανή.
Δεδομένου ενός πλέγματος χαρακτήρων που αναπαριστά κάποια ψηφία, μετέτρεψε το πλέγμα σε μια συμβολοσειρά ψηφίων.
Αν το πλέγμα έχει πολλές σειρές κελιών, οι σειρές θα πρέπει να χωρίζονται στην έξοδο με ένα ",".
"|"), κάτω παύλες ("_") και κενά (" ")."?" για αυτόν τον χαρακτήρα.Η παρακάτω είσοδος (χωρίς τα σχόλια) μετατρέπεται σε "1234567890".
_ _ _ _ _ _ _ _ #
| _| _||_||_ |_ ||_||_|| | # Decimal numbers.
||_ _| | _||_| ||_| _||_| #
# The fourth line is always blank,
Η παρακάτω είσοδος μετατρέπεται σε "123,456,789".
_ _
| _| _|
||_ _|
_ _
|_||_ |_
| _||_|
_ _ _
||_||_|
||_| _|
Όρισε μια συνάρτηση recognizeDigit όπως περιγράφεται στο Βήμα 1 των οδηγιών, με τη διαφορά να αναγνωρίζει και τα δέκα ψηφία από το 0 έως το 9. Διάλεξε ό,τι θέλεις για παραμέτρους και τιμές επιστροφής, αλλά κάνε τη χρήσιμη ως υπορουτίνα για το Βήμα 2.
Για το Βήμα 2, όρισε:
func Recognize(string) []string
και υλοποίησέ τη χρησιμοποιώντας τη recognizeDigit.
Οι συμβολοσειρές εισόδου που ελέγχονται εδώ έχουν ένα \n στην αρχή κάθε γραμμής και
κανένα \n στο τέλος της τελευταίας γραμμής. (Αυτό κάνει τα ακατέργαστα κυριολεκτικά συμβολοσειρών πιο ευανάγνωστα.)
Για επιπλέον πόντους, χειρίσου ομαλά δεδομένα με λανθασμένη μορφοποίηση.
Τι πρέπει να κάνεις με ένα μερικό κελί;
Να το απορρίψεις;
Να το συμπληρώσεις με κενά;
Να το αναφέρεις με έναν χαρακτήρα "?";
Τι πρέπει να κάνεις αν ο πρώτος χαρακτήρας δεν είναι \n;
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Go με 34 έννοιες165 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.