Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
elnnum:sen:qmc:script [2010/03/06 22:51] per |
elnnum:sen:qmc:script [2010/03/06 23:30] (Version actuelle) per |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Script bash pour qmc , karnaugh et wiki ====== | ====== Script bash pour qmc , karnaugh et wiki ====== | ||
+ | [[.|retour]] | ||
+ | Le paquet qmc présent sous Debian et Ubuntu doit-être installé | ||
+ | |||
+ | Ces scripts sont libres. | ||
+ | Vous pouvez les modifier, exécuter , redistribuer | ||
+ | |||
===== wiki_logique.sh ===== | ===== wiki_logique.sh ===== | ||
* Copiez dans un éditeur de texte comme gedit ou vim les lignes de #!/bin/bash à done | * Copiez dans un éditeur de texte comme gedit ou vim les lignes de #!/bin/bash à done | ||
* Enregistrez le fichier sous wiki_logique.sh | * Enregistrez le fichier sous wiki_logique.sh | ||
* Le rendre exécutable, dans un terminal taper après le dollar $ chmod u+x wiki_logique.sh | * Le rendre exécutable, dans un terminal taper après le dollar $ chmod u+x wiki_logique.sh | ||
- | * Ce fichier a besoin du fichier wiki_qmc.sh, il faut donc l'avoir soit dans le même répertoire ou dans votre PATH | + | * Ce fichier a besoin des fichier wiki_qmc.sh et karnaugh.py, il faut donc les avoir soit dans le même répertoire ou dans votre PATH |
* Utilisation : dans un terminal taper après le $ ./wiki_logique.sh | * Utilisation : dans un terminal taper après le $ ./wiki_logique.sh | ||
+ | Il doit vous créer le fichier "logique_td.txt" que vous pourrez lire avec votre éditeur de texte préféré ou | ||
+ | copier le fichier dans une page DokuWiki si l'extension (plugins) math est installé | ||
+ | |||
+ | On peut modifier les équations de A à F après la ligne : #voici les 6 équations à résoudre | ||
+ | On peut aussi modifier le fichier de destination dans la ligne : fichier="logique_td.txt" | ||
+ | |||
<code> | <code> | ||
#!/bin/bash | #!/bin/bash | ||
Ligne 29: | Ligne 41: | ||
===== wiki_qmc.sh ===== | ===== wiki_qmc.sh ===== | ||
+ | * Copiez dans un éditeur de texte comme gedit ou vim les lignes de #!/bin/bash à # le fichier... | ||
+ | * Enregistrez le fichier sous wiki_qmc.sh | ||
+ | * Le rendre exécutable, dans un terminal taper après le dollar $ chmod u+x wiki_qmc.sh | ||
+ | * Placer ce fichier dans $HOME/bin, il se trouvera alors dans votre PATH lire le fichier .bash_profile ou .profile | ||
+ | * Utilisation : dans un terminal taper après le $ wiki_qmc.sh voir la macro "interactive" | ||
+ | |||
<code> | <code> | ||
#!/bin/bash | #!/bin/bash | ||
Ligne 80: | Ligne 98: | ||
[ -n "$PS1" ] && interactive | [ -n "$PS1" ] && interactive | ||
# le fichier peut être mis dans Dokuwiki si le plugins math est installé | # le fichier peut être mis dans Dokuwiki si le plugins math est installé | ||
+ | </code> | ||
+ | |||
+ | ===== karnaugh.py ===== | ||
+ | Ce fichier écrit en python nécessite puthon qui est installé par défaut sur Debian et Ubuntu | ||
+ | * Copiez dans un éditeur de texte comme gedit ou vim les lignes de #!/usr/bin/python à if len(var) == 3 | ||
+ | * Enregistrez le fichier sous karnaugh.py | ||
+ | * Le rendre exécutable, dans un terminal taper après le dollar $ chmod u+x karnaugh.py | ||
+ | * Utilisation : dans un terminal taper après le $ ./karnaugh.py "équation logique" | ||
+ | * Attention "équation logique" doit respecter la syntaxe de qmc, sinon regarder la [[.|page précédente]] | ||
+ | |||
+ | <code> | ||
+ | #!/usr/bin/python | ||
+ | # -*- coding:utf-8 -*- | ||
+ | #karnaugh.py | ||
+ | import commands,os,sys | ||
+ | if len(sys.argv) != 2 : sys.exit(1) | ||
+ | retour=commands.getoutput("qmc -g -s "+sys.argv[1]) | ||
+ | #print retour | ||
+ | s=retour.splitlines() | ||
+ | del s[1] # on enlève la ligne '+---+---+---+---+---+' | ||
+ | resultat = s[-1] | ||
+ | del s[-1] | ||
+ | lb=[] | ||
+ | for ligne in s : | ||
+ | l=ligne.split("|") | ||
+ | del l[0] | ||
+ | del l[-1] | ||
+ | lb.append(l) | ||
+ | bl=[] | ||
+ | for i in range(len(lb[0])) : #i nb de colonnes | ||
+ | bl.append([]) | ||
+ | for j in range(len(lb)): #j nombres de lignes | ||
+ | #print i,j,lb[j][i] | ||
+ | bl[i].append(lb[j][i]) | ||
+ | bl.sort(reverse=True) | ||
+ | lb=[] | ||
+ | for j in range(len(bl[0])): #j nombres de lignes | ||
+ | lb.append([]) | ||
+ | t=len(bl) | ||
+ | val=0 | ||
+ | lb[j].append('') | ||
+ | for i in range(len(bl)) : #i nb de colonnes | ||
+ | lb[j].append(bl[i][j]) | ||
+ | if (j !=0) and (i<t-1) : val+=int(bl[i][j])*2**(t-(2+i)) | ||
+ | lb[j][0]=val | ||
+ | la=lb[1:] | ||
+ | def croissant(x, y): | ||
+ | return x[0] - y[0] | ||
+ | la.sort(croissant) | ||
+ | var=lb[0][1:] | ||
+ | #for elt in la : print elt | ||
+ | |||
+ | # Affichage tableau de Karnaugh | ||
+ | |||
+ | def tab4(entree,liste): | ||
+ | tableau4 = ''' Tableau de Karnaugh 4 variables | ||
+ | ^ %s ^^ %s ^^^^ | ||
+ | ^ ^^<m>overline %s circ overline %s</m>^<m>overline %s circ %s</m>^<m>%s circ %s</m>^<m>%s circ overline %s</m>^ | ||
+ | ^ %s || 00 | 01 | 11 | 10 | | ||
+ | ^<m>overline %s circ overline %s</m>| 00 | %s| %s| %s| %s| | ||
+ | ^<m>overline %s circ %s</m>| 01 | %s| %s| %s| %s| | ||
+ | ^<m>%s circ %s</m>| 11 | %s| %s| %s| %s| | ||
+ | ^<m>%s circ overline %s</m>| 10 | %s| %s| %s| %s|'''%(entree[-1][1],entree[2][1]+entree[3][1], | ||
+ | entree[2][1],entree[3][1],entree[2][1],entree[3][1],entree[2][1],entree[3][1],entree[2][1],entree[3][1], | ||
+ | entree[0][1]+entree[1][1], | ||
+ | entree[0][1],entree[1][1],liste[0][-1],liste[1][-1],liste[3][-1],liste[2][-1], | ||
+ | entree[0][1],entree[1][1],liste[4][-1],liste[5][-1],liste[7][-1],liste[6][-1], | ||
+ | entree[0][1],entree[1][1],liste[12][-1],liste[13][-1],liste[15][-1],liste[14][-1], | ||
+ | entree[0][1],entree[1][1],liste[8][-1],liste[9][-1],liste[11][-1],liste[10][-1]) | ||
+ | return tableau4 | ||
+ | |||
+ | def tab3(entree,liste): | ||
+ | tableau3 = ''' Tableau de Karnaugh 3 variables | ||
+ | ^ %s ^ %s ^^^^ | ||
+ | ^ %s | 00 | 01 | 11 | 10 | | ||
+ | | 0 | %s| %s| %s| %s| | ||
+ | | 1 | %s| %s| %s| %s|'''%(entree[-1][1],entree[1][1]+entree[2][1],entree[0][1], | ||
+ | liste[0][-1],liste[1][-1],liste[3][-1],liste[2][-1],liste[4][-1],liste[5][-1],liste[7][-1],liste[6][-1]) | ||
+ | return tableau3 | ||
+ | |||
+ | def tab2(entree,liste): | ||
+ | tableau2 = ''' Tableau de Karnaugh 2 variables | ||
+ | ^ %s ^ %s ^^ | ||
+ | ^ %s | 0 | 1 | | ||
+ | | 0 | %s| %s| | ||
+ | | 1 | %s| %s|'''%(entree[-1][1],entree[1][1],entree[0][1], | ||
+ | liste[0][-1],liste[1][-1],liste[2][-1],liste[3][-1]) | ||
+ | return tableau2 | ||
+ | |||
+ | if len(var) == 5 : print tab4(var,la) | ||
+ | if len(var) == 4 : print tab3(var,la) | ||
+ | if len(var) == 3 : print tab2(var,la) | ||
</code> | </code> |