A legjobb barátod, Marta nemrég kapta meg álmai állását egy helyi történeti múzeum gyűjteményénél. Mivel tudja, hogy érdekel a programozás, bizalmasan elmesél neked egy problémát a munkájából: hamarosan kiállítás nyílik a számítástechnika történetéről. Egy helyi egyetem matematikai tanszéke több doboznyi történelmi nyomtatványt adományozott, de mivel a dokumentumok rossz állapotban vannak, úgy döntöttek, hogy digitalizálják a szöveget. A régi egyetemi nyomtatóban azonban volt néhány furcsaság abban, ahogy a szöveget megjelenítette, és a barátod szívesen venné a segítségedet, hogy sikeresen kinyerjétek az adatokat.
Az optikai karakterfelismerés (OCR) olyan szoftver, amely a szövegről készült képeket géppel olvasható szöveggé alakítja.
Adott egy karakterekből álló rács, amely számjegyeket ábrázol: alakítsd át a rácsot számjegyekből álló stringgé.
Ha a rács több cellsorból áll, akkor a kimenetben a sorokat "," választja el egymástól.
"|"), aláhúzásokkal ("_") és szóközökkel (" ") rajzolják ki."?"-t arra a karakterre.A következő bemenetből (a megjegyzések nélkül) "1234567890" lesz.
_ _ _ _ _ _ _ _ #
| _| _||_||_ |_ ||_||_|| | # Decimal numbers.
||_ _| | _||_| ||_| _||_| #
# The fourth line is always blank,
A következő bemenetből "123,456,789" lesz.
_ _
| _| _|
||_ _|
_ _
|_||_ |_
| _||_|
_ _ _
||_||_|
||_| _|
Definiálj egy recognizeDigit függvényt az utasítások 1. lépésében leírtak szerint, azzal a különbséggel, hogy ismerje fel mind a tíz számjegyet 0-tól 9-ig. A paramétereket és a visszatérési értékeket úgy válaszd meg, ahogy szeretnéd, de legyen hasznos segédrutinként a 2. lépéshez.
A 2. lépéshez definiáld a következőt:
func Recognize(string) []string
és valósítsd meg a recognizeDigit használatával.
Az itt tesztelt bemeneti stringek minden sor elején tartalmaznak egy \n karaktert, az utolsó sor végén pedig nincs \n. (Ez olvashatóbbá teszi a nyers string literálokat.)
Bónuszpontokért kezeld elegánsan a hibásan formázott adatokat.
Mi a teendő egy hiányos cellával?
Eldobd?
Töltsd fel szóközökkel?
Jelentsd egy "?" karakterrel?
Mit tegyél, ha az első karakter nem \n?
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Go nyelvet 34 fogalom165 feladat segítségével, valódi emberi mentorálással, mindez ingyen.