Skip to content
/ ROQuiz Public

Applicazione per esercitarsi con i quiz del corso Ricerca Operativa M. Se ti è stata utile considera di lasciare una stellina alla repo! ⭐

License

Notifications You must be signed in to change notification settings

mikyll/ROQuiz

Repository files navigation

Downloads Domande Validazione Domande Stargazers Contributors MIT License Issues
java dart flutter

ROQuiz

Applicazione multipiattaforma per esercitarsi con i quiz del corso Ricerca Operativa M.

L'app permette di simulare dei quiz d'esame: vengono pescate, in modo casuale, delle domande a risposta multipla a cui l'utente deve rispondere entro un tempo limite, definito da un timer.
Pool corrente: 107 domande differenti (ultima modifica: 2023-07-19).

Download · Spiegazione Domande · Feature Request | Bug Report

Demo

Mobile

DemoMobileGIF TopicsAndQuestionListGIF SettingsMobileGIF
Demo quiz Argomenti e lista domande Impostazioni

Desktop

TimeoutGIF PlayingAroundGIF
Tempo scaduto Demo app

Desktop (Old)

Versione Java funzionante ma non più supportata.
EndQuizGIF TimeoutGIF
Terminazione quiz Tempo scaduto

Disclaimer

L'obiettivo dell'applicazione è esercitarsi coi quiz dopo aver studiato la teoria (molto meglio se dal libro, in quanto è completo ed esaustivo). Non mi assumo responsabilità di alcun tipo nel caso di errori nelle domande o nelle risposte, né tantomento nel caso di bocciature potenti. Fatene un buon uso e buona fortuna con l'esame <3

Download

Scaricare l'ultima release, per il proprio dispositivo (desktop/mobile).

Formattazione domande

Le domande sono caricate da un file di testo (.txt) che ha il seguente formato:

  • (opzionale) Argomenti:
    • la riga di un argomento inizia col carattere speciale '@', seguito dal titolo dell'argomento (es: Complessità). Ogni riga di argomento è seguita dalle domande relative a quell'argomento, fino all'argomento successivo. Alla fine della riga dell'argomento possono essere usati caratteri non alfabetici (ad esempio '=') per separare visivamente le domande di argomenti differenti (tali caratteri verranno ignorati).
  • Domande:
    • una riga per la domanda;
    • 5 righe per le risposte (la riga inizia con una lettera maiuscola, seguita da un punto e dalla risposta);
    • una riga per la risposta corretta (una lettera da A a E);
    • una riga vuota se non è l'ultima domanda (questa riga separa la domanda da quella successiva, o dall'argomento successivo).

NB: non è importante la lettera con cui iniziano le risposte, basta che siano in ordine, altrimenti la risposta giusta e la lettera non corrispondono.

esempio (tre domande di due argomenti diversi nel file Domande.txt):

@Programmazione Matematica =============================================================================
Dato un insieme F, un intorno è
A. L'insieme di tutti i sottoinsiemi di F
B. L'insieme dei punti di F a distanza minore di epsilon da un punto x di F
C. Una funzione N: F -> 2^F
D. Una combinazione convessa di due punti x e y di F
E. Nessuna di queste
C

@Dualità ===============================================================================================
Se un problema di programmazione lineare (primale) ha soluzione ottima finita, allora:
A. Il suo duale non è detto che abbia soluzione ottima finita.
B. Anche il suo duale ha soluzione ottima finita e i valori delle soluzioni coincidono.
C. Anche il duale ha soluzione ottima finita, ma non è detto che i valori delle soluzioni coincidano.
D. Anche il duale ha soluzione ottima finita, ma i valori delle due soluzioni non coincidono.
E. Nessuna di queste
B

Quale tra queste affermazioni è falsa rispetto ad una corrispondenza primale-duale?
A. Ai costi corrispondono condizioni su variabili e viceversa.
B. I vincoli sono dati dalle righe di A per il primale, dalle colonne di A per il duale.
C. Ai costi corrispondono i termini noti e viceversa.
D. Ad un vincolo corrisponde una condizione su una variabile e viceversa.
E. Nessuna di queste.
A

Spiegazione Domande

Questo documento, a cura di Lorenzo di Palma e Filippo Veronesi, contiene la spiegazione alla maggior parte delle domande presenti nel quiz.

Come Contribuire

Aggiunta domande o feature al progetto:

  1. Fare una fork della repository.
  2. Clonare la repository in locale.
  3. (Opzionale) Creare un nuovo branch.
  4. Aggiungere le modifiche:
    • Per aggiungere nuove domande: modificare il file 'Domande.txt', inserendo le nuove domande sotto gli argomenti relativi.
      NB: in caso non si sappia sotto quale argomento inserire una domanda, farlo presente in un commento nella pull request.
    • Per aggiungere delle feature: basta implementarle e integrarle col resto dell'applicazione.
  5. Fare commit e push.
  6. Creare una pull request aggiungendo informazioni se necessario.
  7. Ammirare il proprio nome inserito in questa meravigliosa lista che viene aggiornata automaticamente.
    NB: per far sì che il nome del contributor venga registrato correttamente nella lista, controllare che al commit corrispondano username ed e-mail del proprio account GitHub.

Proposta feature:

  1. Aprire un issue spiegando in cosa consiste la feature da aggiungere.
  2. Possibilmente aggiungervi la label "enhancement".

Contributors Attuali

mikyll
mikyll
filippoveronesi
filippoveronesi
TryKatChup
TryKatChup
Federicoand98
Federicoand98
lollofred
lollofred
RedDuality
RedDuality

Funzionalità

Features dell'app e sviluppi futuri.
Feature 🖥️|📱
Visualizzazione lista domande in-app ✔️
Possibilità di modificare il file domande ✔️
Scelta degli argomenti ✔️
Visualizzazione lista domande (totale, pool, per argomento) ✔️
Strumento di ricerca delle domande per keystring ✔️
Impostazioni persistenti ✔️
Impostazione: tema scuro ✔️
Impostazione: toggle controllo aggiornamenti app ✔️
Impostazione: toggle controllo nuove domande ✔️
Impostazione: modifica del file domande (da dentro l'applicazione) ✔️
Impostazione: caricamento file domande esterno ✔️
Impostazione: modifica del numero di domande del quiz ✔️
Impostazione: modifica del timer del quiz ✔️
Impostazione: toggle mescolamento delle risposte ✔️
Impostazione: toggle alert di conferma ✔️
Impostazione: toggle tema scuro ✔️
Template per pubblicare una issue ✔️
Impostazione: modifica del file domande (reference) ✔️
Modifica domande: scroll automatico alla riga dell'errore
Controllo domande duplicate
Unit/Function test
Pipeline CI/CD per build e deploy
Versione web ospitata su GitHub pages

Built With

  • IDE: VSCode v1.81.1
  • Framework: Flutter v3.13.1

Build

Setup Flutter e Run del Progetto

  1. Scaricare l'SDK Flutter dal sito web docs.flutter.dev.
  2. Assicurarsi di aver inserito la directory bin/ alla variabile d'ambiente PATH.
  3. Aprire un terminale e lanciare flutter doctor.
    Questo comando indica se ci sono problemi con l'SDK e fornisce informazioni sulle dipendenze necessarie per il suo funzionamento.
  4. Lanciare il comando flutter run per avviare l'applicazione. Flutter chiederà di selezionare il dispositivo (es. Chrome, Android). Si può specificare direttamente il device id con l'opzione -d, ad esempio per la versione web con Microsoft Edge:
    flutter run -d edge
    

Compilazione Release

Il progetto dell'applicazione flutter si trova nella directory app-mobile/flutter_application. Per compilarlo, lanciare uno dei comandi seguenti, in base all'output desiderato:

  • Android: flutter build apk --split-per-abi;
  • Windows: flutter build windows;
  • Linux: flutter build linux;
  • Web: flutter build chrome, flutter build edge.

Riferimenti

Link e risorse a cui ho fatto riferimento durante lo sviluppo dell'app.