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
- 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\)).
- Gradi di riempimento: Per ciascuna delle \(Q\) domande, leggere i \(K\) valori reali corrispondenti alle alternative
A,B,C, …, nell’ordine di ingresso. - Conteggio delle marcature: Per ogni domanda, contare quante alternative hanno un grado di riempimento strettamente maggiore di \(\mathrm{Th}\).
- 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.
- Se nessuna alternativa supera \(\mathrm{Th}\), classificare la domanda come
- Output per domanda: Stampare, nell’ordine di lettura, la classificazione di ciascuna domanda.
- Totali: Alla fine, stampare il numero di domande
OK(marcatura singola),BRANCOeDUPLA_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’alternativaBe 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. |
%%writefile EP06_03.py
# Codice PythonOverwriting 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.