Simplicio è un programma che semplifica espressioni matematiche mostrando tutti i passaggi fatti.
Per esempio passandogli in input l'espressione 3/(4+2)+2*(3:(4+5)+2^(6*(3/2-1)))
, l'output sarà:
Da notare che in ogni espressione:
- la sottoespressione tra parentesi oggetto della semplificazione (se presente) è colorata in blu,
- la sottoespressione che sta per essere semplificata è riquadrata in rosso,
- il risultato della semplificazione del passo precedente (se presente) è riquadrato in verde.
Come si può inoltre vedere dall'esempio, ad ogni passaggio viene svolta una semplificazione all'interno della parentesi più a sinistra tra quelle che che hanno il grado di annidamento massimo.
All'interno di questa parentesi le operazioni vengono svolte nel seguente ordine:
- potenze: prima l'esponente e poi la base
- frazioni: prima il numeratore e poi il denominatore
- moltiplicazioni e divisioni
- somme e sottrazioni
- operatori unari
Da notare inoltre che quando sono presenti più somme e differenze (o moltiplicazioni e divisioni) consecutivamente, vengono svolte in un solo passaggio.
Questo progetto utilizza ANTLR4 come parser generator, la cui versione 4.3.9 è scaricabile dal seguente link.
Successivamente bisogna allocare la variabile d'ambiente ANTLR4_JAR
che punti al file jar scaricato.
Su Linux e MacOS digitare:
$ export ANTLR4_JAR=path
dove path
è il percorso assoluto del file appena scaricato.
Per compilare basta eseguire lo script compile.sh
.
Digitare:
./compile.sh
I file generati dalla compilazione sono nella cartella simplicio/out/
.
Per eseguire il progetto basta lanciare lo script run.sh
con l'espressione da risolvere come parametro:
$ ./run.sh "1+2*3"
Lo script genererà i file sorgenti latex ed il file compilato nella directory simplicio/output/
ed aprirà il file dvi
con il programma predefinito di sistema.