Formato dei problemi
Ogni problema è rappresentato da un file Markdown:
Quanto fa 2 + 2?
:::answers{.anyCorrect}
- [ ] 2
- [ ] 3
- [x] 4
- [ ] 5
:::
> La soluzione è 4.
Il file è composto da tre parti:
- il testo: la descrizione di cosa chiede il problema;
- le risposte: la parte in cui l'utente sceglie la risposta corretta;
- la soluzione: la spiegazione di come si risolve il problema, mostrata dopo che la prova è finita.
Un'intestazione per la domanda viene generata automaticamente con il numero del problema (ad esempio Domanda 1
, Domanda 2
, ecc.) e non deve essere inclusa nel file Markdown.
TIP
Le risposte e la soluzione possono essere definite in qualsiasi parte del testo, ma è consigliato metterle in quest'ordine suggerito.
È anche possibile definire i problemi usando MDX (Markdown con l'aggiunta di JavaScript) che permette di definire, attraverso JavaScript, parti interattive del problema, ad esempio l'editor di codice a blocchi.
Testo del problema
Il testo è la parte principale del problema. Si può formattare in Markdown, la maggior parte delle funzionalità di Markdown sono supportate e alcune estensioni, tra cui:
- codice con syntax highlighting (anche per pseudocodice);
- immagini;
- tabelle;
- formule matematiche di LaTeX (
$...$
).
ATTENZIONE
Le seguenti funzionalità non sono supportate:
- citazioni (blockquotes): questa sintassi è usata per indicare la soluzione;
- separatore orizzontale (
---
): questa sintassi è usata per separare i sottoproblemi; - TODO list: questa sintassi è usata per definire le risposte.
Risposte
Le risposte sono riportate all'interno di una direttiva generica per un blocco con stile, nel formato:
:::answers{.TYPE}
DESCRIPTION
:::
Attualmente sono supportati quattro tipi di risposte:
risposta singola (anyCorrect), definita tramite una TODO list in cui le risposte corrette sono contrassegnate con una
x
:md:::answers{.anyCorrect} - [ ] risposta 1 - [x] risposta 2 - [ ] risposta 3 - [ ] risposta 4 :::
È possibile indicare più risposte corrette, ma l'utente può selezionarne solo una. La risposta sarà considerata corretta se l'utente seleziona una qualsiasi delle risposte contrassegnate come corrette.
risposta multipla (allCorrect), anche definita tramite una TODO list in cui le risposte corrette sono contrassegnate con una
x
:md:::answers{.allCorrect} - [ ] risposta 1 - [x] risposta 2 - [x] risposta 3 - [ ] risposta 4 :::
In questo caso, l'utente può selezionare un numero qualsiasi di opzioni (da zero a tutte). La risposta sarà considerata corretta se l'utente seleziona esattamente tutte le risposte contrassegnate come corrette. La risposta sarà considerata mancante se l'utente non seleziona alcuna risposta.
risposta aperta (open), definita con la sintassi speciale
?>
:md:::answers{.open} ?> risposta :::
Se la risposta è un numero, verrà visualizzata come input numerico; altrimenti, verrà visualizzata come un breve input testuale. La risposta sarà considerata corretta se corrisponde esattamente alla risposta fornita.
WARNING
Una risposta aperta può essere lunga al massimo 100 caratteri.
codice a blocchi: l'utente può usare un editor integrato per implementare una soluzione usando la programmazione a blocchi.
Soluzione
La soluzione è definita da una citazione e può essere formattata a sua volta con Markdown:
> la
> **soluzione**
> al
> _problema_
Durante la gara la soluzione non è visibile all'utente. È possibile vedere la soluzione solo dopo aver finito la prova in modalità training.
Sottoproblemi
È possibile specificare più sottoproblemi nello stesso file separandoli attraverso tre trattini ---
:
Sottoproblema 1 ...
:::answers{.anyCorrect}
- [x] Sì
- [ ] No
:::
> Soluzione 1 ...
---
Sottoproblema 2 ...
:::answers{.open}
?> BDC
:::
> Soluzione 2 ...
Ogni sottoproblema ha il suo testo, le sue risposte, la sua soluzione e un'intestazione generata automaticamente con il numero del problema e del sottoproblema (ad esempio Domanda 1.1
, Domanda 1.2
, ecc).