Kurzusok
/
Go
Go
/
Feladatok
/
OCR-számok
OCR-számok

OCR-számok

Közepes

Bevezetés

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.

Utasítások

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.

  • A rács egy vagy több cellsorból áll.
  • A rács minden sorát egy vagy több cella alkotja.
  • Minden cella három oszlop széles és négy sor magas (3x4), és egy számjegyet ábrázol.
  • A számjegyeket függőleges vonalakkal ("|"), aláhúzásokkal ("_") és szóközökkel (" ") rajzolják ki.

Határesetek

  • Ha a bemenet mérete nem megfelelő, a programodnak jeleznie kell, hogy hiba történt.
  • Ha a bemenet mérete megfelelő, de egy cella nem ismerhető fel, akkor a programod írjon "?"-t arra a karakterre.

Példák

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.

    _  _ 
  | _| _|
  ||_  _|
         
    _  _ 
|_||_ |_ 
  | _||_|
         
 _  _  _ 
  ||_||_|
  ||_| _|
         

Megvalósítási megjegyzések

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?

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Go Exercism

Készen állsz elkezdeni a(z) OCR-számok feladatot?

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.