Salut ,
Je viens de coder mes segments , et comme une évidence (en utilisant le tableau de karnaugh) , je retombe sur mon choix inital , à savoir sélectionner la liste des cases ayant le plus petit nombre de "0" ou de "1" .
Je n'ai pas passé tous les segments , mais rien que le premier
seghex_a n'a que 4 valeurs à "0" et c'est celle que j'ai choisi pour créer la table de vérité .
Code : Tout sélectionner
# decimal
segdec_a = []
segdec_b = []
segdec_c = []
segdec_d = []
segdec_e = []
segdec_f = []
segdec_g = []
for i in range(10):
segdec_a.append(int(bool(i==1 or i==4)^1)) # eteint
segdec_b.append(int(bool(i==5 or i==6)^1)) # eteint
segdec_c.append(int(bool(i==2)^1)) # eteint
segdec_d.append(int(bool(i==1 or i==4 or i==7)^1)) # eteint
segdec_e.append(int(bool(i==0 or i==2 or i==6 or i==8))) # allumé
segdec_f.append(int(bool(i==1 or i==2 or i==3 or i==7)^1)) # eteint
segdec_g.append(int(bool(i==0 or i==1 or i==7)^1)) # eteint
Code : Tout sélectionner
# hexadécimal
seghex_a = [] + segdec_a
seghex_b = [] + segdec_b
seghex_c = [] + segdec_c
seghex_d = [] + segdec_d
seghex_e = [] + segdec_e
seghex_f = [] + segdec_f
seghex_g = [] + segdec_g
for i in range(10,16):
seghex_a.append(int(bool(i==0xb or i==0xd)^1)) # eteint
seghex_b.append(int(bool(i==0xa or i==0xd))) # allumé
seghex_c.append(int(bool(i==0xc or i==0xe or i==0xf)^1)) # eteint
seghex_d.append(int(bool(i==0xa or i==0xf)^1)) # eteint
seghex_e.append(int(bool(1))) # allumé
seghex_f.append(int(bool(i==0xd)^1)) # eteint
seghex_g.append(int(bool(i==0xc)^1)) # eteint
OU écrit autrement :
Code : Tout sélectionner
allume = 1
eteint = allume ^ 1
# decimal
segdec_a = []
segdec_b = []
segdec_c = []
segdec_d = []
segdec_e = []
segdec_f = []
segdec_g = []
for i in range(10):
segdec_a.append( int( eteint == (i in [1,4] )))
segdec_b.append( int( eteint == (i in [5,6] )))
segdec_c.append( int( eteint == (i in [2] )))
segdec_d.append( int( eteint == (i in [1,4,7] )))
segdec_e.append( int( allume == (i in [0,2,6,8] )))
segdec_f.append( int( eteint == (i in [1,2,3,7] )))
segdec_g.append( int( eteint == (i in [0,1,7] )))
Code : Tout sélectionner
# hexadécimal
seghex_a = [] + segdec_a
seghex_b = [] + segdec_b
seghex_c = [] + segdec_c
seghex_d = [] + segdec_d
seghex_e = [] + segdec_e
seghex_f = [] + segdec_f
seghex_g = [] + segdec_g
for i in range(10,16):
seghex_a.append( int( eteint == (i in [0xb,0xd] )))
seghex_b.append( int( allume == (i in [0xa,0xd] )))
seghex_c.append( int( eteint == (i in [0xc,0xe,0xf] )))
seghex_d.append( int( eteint == (i in [0xa,0xf] )))
seghex_e.append( int( allume ))
seghex_f.append( int( eteint == (i in [0xd] )))
seghex_g.append( int( eteint == (i in [0xc] )))
Le code d'affichage
Code : Tout sélectionner
aff=""
for i in range(16):
aff += " %3s " %(seghex_a[i] and "###" or " ")
aff+="\n"
for j in range(3):
for i in range(16):
aff+= "%1s %1s " %((seghex_f[i] and "#" or " "), (seghex_b[i] and '#' or " "))
aff+="\n"
for i in range(16):
aff+=" %3s " %(seghex_g[i] and "###" or " ")
aff+="\n"
for i in range(3):
for i in range(16):
aff+="%1s %1s " %((seghex_e[i] and "#" or " "), (seghex_c[i] and '#' or " "))
aff+="\n"
for i in range(16):
aff+=" %3s " %(seghex_d[i] and "###" or " ")
aff+="\n"
print (aff)
J'obiens le résultat suivant :
Code : Tout sélectionner
>>> print (aff)
### ### ### ### ### ### ### ### ### ### ### ###
# # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # #
### ### ### ### ### ### ### ### ### ### ### ###
# # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # #
### ### ### ### ### ### ### ### ### ### ###
>>>
Le résultat du Karnaugh en affichant que les "0" , on que 4 valeurs 1,4,11 et 13 .
Code : Tout sélectionner
>>> karnaugh(seghex_a, s=0)
Table : [1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1]
Total à 1 : 12
Total à 0 : 4
. . .C.C.
. . .A.A. .
. . .0. .0.
.B. . . . .
D.B. .0. . .
D. . . .0. .
0 1 5 4
2 3 7 6
10 11 15 14
8 9 13 12
>>>
Si on choisi les 1 , on va avoir une liste à rallonge .
Code : Tout sélectionner
>>> karnaugh(seghex_a, s=1)
Table : [1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1]
Total à 1 : 12
Total à 0 : 4
. . .C.C.
. . .A.A. .
. .1. .1. .
.B.1.1.1.1.
D.B.1. .1.1.
D. .1.1. .1.
0 1 5 4
2 3 7 6
10 11 15 14
8 9 13 12
>>>