Această temă constă în implementarea unui decodificator pentru coduri de bare de tip EAN-13, pornind de la o imagine alb-negru reprezentată sub formă de matrice binară (0 pentru alb, 1 pentru negru).
Scopul este să extragem numărul format din 13 cifre codificat în barele codului EAN-13.
EAN-13 este un cod format din 13 cifre, codificate pe 59 de bare (3 bare start + 42 bare cifre 2-7 + 5 bare centru + 42 bare cifre 8-13 + 3 bare stop). Prima cifră este codificată indirect, prin alegerea unui pattern de paritate pentru primele 6 cifre.
Codificarea cifrelor folosește trei scheme:
- L (paritate impară)
- G (paritate pară)
- R (paritate pară, pentru ultimele 6 cifre)
Există reguli precise pentru structura codului și calculul cifrei de control pentru verificare.
- Pornind de la o matrice de pixeli alb-negru (0 = alb, 1 = negru), se decupează rândurile din mijloc pentru analiza codului.
- Se grupează biții identici consecutivi în perechi (grosime, bit).
- Se identifică secvențele start, centru și stop, extrăgând cele 59 de bare.
- Se transformă grupurile de 4 bare în cifre, folosind distanța minimă față de codificările standard L, G, R.
- Se determină cifra de paritate din codificările primului grup de cifre.
- Se calculează și verifică cifra de control pentru validare.
- Rezultatul este codul EAN-13 valid sau
Nonedacă decodarea e invalidă.
src/– conține codul sursă Scala, inclusiv fișierulDecoder.scalaunde se implementează TODO-urile.- Codul de parsare și prelucrare imagine (.ppm → .pbm) este oferit, nu necesită modificări.
- Descarcă arhiva schelet
tema1_pp_2025.zip. - Creează un proiect nou în IntelliJ Scala.
- Copiază folderele și fișierul din arhivă în root-ul proiectului (folderul
srcva fi suprascris). - Restart IDE-ul.
- Compilează și rulează proiectul.
- Nu folosi efecte laterale (nu utiliza
var). - Folosește doar declarații
val. - Folosește funcții de ordin superior și programare funcțională.
- Testează pe rândurile din mijloc ale imaginii pentru a crește șansele de succes.
Pe WSL/Linux puteți folosi:
sudo apt install feh
feh image.ppm