EDI+VA · Esercizio di Programmazione

EP06_03 — 🟡 Classificazione delle Marcature nei Fogli di Risposta (OMR)

6.14.3 EP06_03 🟡 Classificazione delle Marcature nei Fogli di Risposta (OMR)

Dopo la rettifica del foglio e la segmentazione dei riquadri delle risposte, il MCTest stima, per ogni bolla, un grado di riempimento, rappresentato da un valore tra \(0\) e \(100\). Sulla base di questi valori, il sistema deve determinare automaticamente l’alternativa marcata, individuando anche domande in bianco e casi di marcature multiple.

In questo esercizio, implementerai questa fase di decisione del pipeline di OMR. La classificazione dipende da una soglia di riempimento: piccole variazioni di questo valore possono alterare il risultato della lettura automatica.

6.14.3.1 📋 Linee Guida di Implementazione

  1. Parametri: Leggere gli interi \(Q\) (numero di domande) e \(K\) (numero di alternative per domanda, con \(2 \le K \le 26\)) e la soglia di riempimento \(\mathrm{Th}\) (numero reale tra \(0\) e \(100\)).
  2. Gradi di riempimento: Per ciascuna delle \(Q\) domande, leggere i \(K\) valori reali corrispondenti alle alternative A, B, C, …, nell’ordine di ingresso.
  3. Conteggio delle marcature: Per ogni domanda, contare quante alternative hanno un grado di riempimento strettamente maggiore di \(\mathrm{Th}\).
  4. Classificazione:
    • Se nessuna alternativa supera \(\mathrm{Th}\), classificare la domanda come BRANCO.
    • Se esattamente un’alternativa supera \(\mathrm{Th}\), stampare la lettera corrispondente (A, B, C, …).
    • Se due o più alternative superano \(\mathrm{Th}\), classificare la domanda come DUPLA_MARCACAO.
  5. Output per domanda: Stampare, nell’ordine di lettura, la classificazione di ciascuna domanda.
  6. Totali: Alla fine, stampare il numero di domande OK (marcatura singola), BRANCO e DUPLA_MARCACAO.

6.14.3.2 📌 Vincoli Computazionali

  • Confronto stretto: solo i valori maggiori di \(\mathrm{Th}\) sono considerati marcature valide; i valori esattamente uguali alla soglia non devono essere conteggiati.
  • Lettere delle alternative: l’indice \(0\) corrisponde all’alternativa A, l’indice \(1\) all’alternativa B e così via.
  • Marcature multiple: ogni volta che due o più alternative superano la soglia, la classificazione deve essere DUPLA_MARCACAO, indipendentemente dai rispettivi gradi di riempimento.

6.14.3.3 🧠 Fondamento Teorico

Situazione Classificazione Interpretazione
Esattamente un’alternativa sopra la soglia Lettera dell’alternativa Risposta valida
Nessuna alternativa sopra la soglia BRANCO Domanda senza risposta
Due o più alternative sopra la soglia DUPLA_MARCACAO Risposta ambigua

La soglia di riempimento controlla la sensibilità dell’algoritmo. Valori molto bassi tendono ad aumentare il numero di DUPLA_MARCACAO, mentre valori molto alti possono aumentare la quantità di domande classificate come BRANCO.

6.14.3.4 📦 Specifica di Ingresso e Uscita (VPL)

Ingresso:

  • Riga 1: Intero \(Q\).
  • Riga 2: Intero \(K\).
  • Riga 3: Numero reale \(\mathrm{Th}\).
  • Prossime \(Q\) righe: \(K\) numeri reali, corrispondenti ai gradi di riempimento delle alternative.
  • Riga 1: Interi \(Q\) e \(K\).

Uscita:

  • \(Q\) righe, ciascuna contenente la classificazione della rispettiva domanda.
  • Riga finale: OK: x BRANCO: y DUPLA_MARCACAO: z.

6.14.3.5 📌 Esempi

Ingresso Uscita Osservazione
3
4
50
10 85 5 12
20 15 18 22
90 88 10 5
B
BRANCO
DUPLA_MARCACAO
OK: 1 BRANCO: 1 DUPLA_MARCACAO: 1
Nella prima domanda solo B supera la soglia; nella seconda nessuna alternativa la supera; nella terza, A e B superano la soglia.
1
2
50.0
50 50
BRANCO
OK: 0 BRANCO: 1 DUPLA_MARCACAO: 0
I valori uguali alla soglia non sono considerati marcature valide.
🎮 Simulatore EP06_03: Classificazione delle Marcature OMR 4 Alternative
Regola il grado di compilazione di ciascuna bolla (A–D) e la soglia per osservare la classificazione risultante.
–
Figura 6.23: Simulatore EP06_03: Classificazione delle Marcature OMR
%%writefile EP06_03.py
# Codice Python
Overwriting EP06_03.py
TestSuite("EP06_03.py").run()
✔️ EP06_03.cases esiste già in casos/
📋 5 caso/i caricato/i da casos/EP06_03.cases

🔍 Test di Python: EP06_03.py
⚠️ EP06_03.py: file vuoto (meno di 3 righe). Test saltati.