Deine beste Freundin Marta hat kürzlich ihren Traumjob ergattert und arbeitet jetzt mit den Sammlungen eines lokalen Geschichtsmuseums. Weil Marta von deinem Interesse am Programmieren weiß, weiht sie dich in ein Problem bei der Arbeit ein, bei dem es um eine bevorstehende Ausstellung zur Geschichte der Computertechnik geht. Die mathematische Fakultät einer lokalen Universität hatte mehrere Kisten mit historischen Ausdrucken gespendet, doch weil die Dokumente in so schlechtem Zustand sind, hat man entschieden, den Text zu digitalisieren. Allerdings hatte der alte Drucker der Universität so seine Eigenheiten, was die Darstellung von Text anging, und deine Freundin könnte deine Hilfe gut gebrauchen, um die Daten erfolgreich herauszuholen.
Optische Zeichenerkennung, kurz OCR (von englisch Optical Character Recognition), ist Software, die Bilder von Text in maschinenlesbaren Text umwandelt.
Wenn du ein Raster aus Zeichen bekommst, das einige Ziffern darstellt, wandle das Raster in einen String aus Ziffern um.
Wenn das Raster mehrere Zeilen von Zellen hat, sollten die Zeilen in der Ausgabe mit einem "," getrennt werden.
"|"), Unterstrichen ("_") und Leerzeichen (" ") gezeichnet."?" ausgeben.Die folgende Eingabe (ohne die Kommentare) wird in "1234567890" umgewandelt.
_ _ _ _ _ _ _ _ #
| _| _||_||_ |_ ||_||_|| | # Decimal numbers.
||_ _| | _||_| ||_| _||_| #
# The fourth line is always blank,
Die folgende Eingabe wird in "123,456,789" umgewandelt.
_ _
| _| _|
||_ _|
_ _
|_||_ |_
| _||_|
_ _ _
||_||_|
||_| _|
Definiere eine Funktion recognizeDigit wie in Schritt 1 der Anleitung beschrieben, nur dass sie alle zehn Ziffern 0 bis 9 erkennen soll. Bei Parametern und Rückgabewerten kannst du wählen, was dir gefällt, aber mach sie als Unterprogramm für Schritt 2 nützlich.
Definiere für Schritt 2
func Recognize(string) []string
und implementiere sie mit recognizeDigit.
Die hier getesteten Eingabe-Strings haben ein \n am Anfang jeder Zeile und kein abschließendes \n in der letzten Zeile. (So bleiben Raw-String-Literale lesbar.)
Für Bonuspunkte gehst du mit fehlerhaft formatierten Daten elegant um.
Was machst du mit einer unvollständigen Zelle?
Sie verwerfen?
Mit Leerzeichen auffüllen?
Sie mit dem Zeichen "?" melden?
Was machst du, wenn das erste Zeichen kein \n ist?
Melde dich bei Exercism an, um Go mit 34 Konzepte165 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.