Ceci est une ancienne révision du document !
—-
#!/bin/bash #les fonctions pour QMC: - simplification tool (by using the Quine - McClusky process) # voir le fichier wiki_qmc.sh pour l'explication des equations source wiki_qmc.sh #TD1 #voici les 6 équations à résoudre A="/b/c/d+a/bcd+/bc/d+abc/d+bd" B="ab+/c/d+/a/bc/d+/abc/d" C="c(a/d+/ab)+acd(a+/b)" D="abc+a/bc+ab/cd" E="(a+bc)+/a(/b+/c)(ad+c)" F="/a/bc+a/bc+/(a+c)+/bc/d+/(/a+c)" fichier="logique_td.txt" : >"$fichier" for eq in $(echo {A..F}) # eq prend les valeurs de A à F do # ${!eq} c'est de l'adressage indirect, eq prend la valeur (du contenu de A à F),ici une des équations ecrire "${!eq}" $eq >>"$fichier" #on aurait pu utiliser eval t=\$$eq done
#!/bin/bash # QMC: - simplification tool (by using the Quine - McClusky process) # Pour simplifier des équations logiques avec qmc # ce petit script remplace "c(a/d+/ab)+acd(a+/b)" par "c*[a*/d+/a*b]+a*c*d*[a+/b]" # il le transforme aussi pour Dokuwiki ou OpenOffice equ() { s=$1 # équation à traiter l=${#s} for i in $(seq 0 $((l-1))) do x=${s:$i:1} # caractère par caractère de l'équation s y=${s:$((i+1)):1}; #caractère suivant t=$t$x if [[ "$x" == [a-z] ]] && ! [[ -z $y ]] && ! [[ "$y" == [+*\)] ]] # si le caractère traité est une variable (lettre de a à z) et le caratère suivant # n'est pas le dernier, ni le caractère + ou * ou ) alors on ajoute le caractère * then t="${t}*" fi done echo $t } oo() # remplace la barre / par overline entouré d'espace, et * par circ { equ $1 |sed 's!/! overline !g;s/*/ circ /g' } ecrire() { echo "===== $2 = $1 =====" echo "**Équation logique ** <m> $2 = $(oo $1) </m>" u=$(equ $1 |tr "()" "[]") echo "commande :qmc -g -s \" $u \"" qmc -g -s $u |sed '/+--/d'|sed '$d' #res=$(qmc -g -s $u |sed -n '$p'|cut -d : -f2) echo $res echo " Résultat de la simplification de <m> $2 = $(oo $(qmc -g -s $u |sed -n '$p'|cut -d : -f2)) </m>" } interactive() { if [ $# -lt 2 ] then echo 'erreur, il faut deux arguments, exemple : eq_qmc.sh "abc+a/bc+ab/cd" eq_wiki.txt ' exit 1 else ecrire $1 "S" >$2 fi } [ -n "$PS1" ] && interactive # le fichier peut être mis dans Dokuwiki si le plugins math est installé