@@ -74,10 +74,7 @@ def is_for_table(string1: str, string2: str, count: int) -> bool:
7474    """ 
7575    list1  =  list (string1 )
7676    list2  =  list (string2 )
77-     count_n  =  0 
78-     for  i  in  range (len (list1 )):
79-         if  list1 [i ] !=  list2 [i ]:
80-             count_n  +=  1 
77+     count_n  =  sum (item1  !=  item2  for  item1 , item2  in  zip (list1 , list2 ))
8178    return  count_n  ==  count 
8279
8380
@@ -92,40 +89,34 @@ def selection(chart: list[list[int]], prime_implicants: list[str]) -> list[str]:
9289    temp  =  []
9390    select  =  [0 ] *  len (chart )
9491    for  i  in  range (len (chart [0 ])):
95-         count  =  0 
96-         rem  =  - 1 
97-         for  j  in  range (len (chart )):
98-             if  chart [j ][i ] ==  1 :
99-                 count  +=  1 
100-                 rem  =  j 
92+         count  =  sum (row [i ] ==  1  for  row  in  chart )
10193        if  count  ==  1 :
94+             rem  =  max (j  for  j , row  in  enumerate (chart ) if  row [i ] ==  1 )
10295            select [rem ] =  1 
103-     for  i  in  range (len (select )):
104-         if  select [i ] ==  1 :
105-             for  j  in  range (len (chart [0 ])):
106-                 if  chart [i ][j ] ==  1 :
107-                     for  k  in  range (len (chart )):
108-                         chart [k ][j ] =  0 
109-             temp .append (prime_implicants [i ])
96+     for  i , item  in  enumerate (select ):
97+         if  item  !=  1 :
98+             continue 
99+         for  j  in  range (len (chart [0 ])):
100+             if  chart [i ][j ] !=  1 :
101+                 continue 
102+             for  row  in  chart :
103+                 row [j ] =  0 
104+         temp .append (prime_implicants [i ])
110105    while  True :
111-         max_n  =  0 
112-         rem  =  - 1 
113-         count_n  =  0 
114-         for  i  in  range (len (chart )):
115-             count_n  =  chart [i ].count (1 )
116-             if  count_n  >  max_n :
117-                 max_n  =  count_n 
118-                 rem  =  i 
106+         counts  =  [chart [i ].count (1 ) for  i  in  range (len (chart ))]
107+         max_n  =  max (counts )
108+         rem  =  counts .index (max_n )
119109
120110        if  max_n  ==  0 :
121111            return  temp 
122112
123113        temp .append (prime_implicants [rem ])
124114
125-         for  i  in  range (len (chart [0 ])):
126-             if  chart [rem ][i ] ==  1 :
127-                 for  j  in  range (len (chart )):
128-                     chart [j ][i ] =  0 
115+         for  j  in  range (len (chart [0 ])):
116+             if  chart [rem ][j ] !=  1 :
117+                 continue 
118+             for  i  in  range (len (chart )):
119+                 chart [i ][j ] =  0 
129120
130121
131122def  prime_implicant_chart (
0 commit comments