minor refactoring of qmc

This commit is contained in:
hneemann 2017-03-08 19:54:51 +01:00
parent 7fe144b47b
commit d864cc1158
2 changed files with 21 additions and 17 deletions

View File

@ -134,7 +134,7 @@ public class QuineMcCluskey {
TableRow r1 = list.get(i); TableRow r1 = list.get(i);
TableRow r2 = list.get(j); TableRow r2 = list.get(j);
int index = checkCompatible(r1, r2); int index = r1.checkCompatible(r2);
if (index >= 0) { if (index >= 0) {
// can optimize; // can optimize;
TableRow newRow = new TableRow(r1); TableRow newRow = new TableRow(r1);
@ -170,22 +170,6 @@ public class QuineMcCluskey {
return rows.isEmpty(); return rows.isEmpty();
} }
private int checkCompatible(TableRow r1, TableRow r2) {
if (r1.getOptimizedFlags() != r2.getOptimizedFlags())
return -1;
int difIndex = -1;
for (int i = 0; i < r1.size(); i++) {
if (!r1.get(i).equals(r2.get(i))) {
if (difIndex >= 0)
return -1;
difIndex = i;
}
}
return difIndex;
}
@Override @Override
public String toString() { public String toString() {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();

View File

@ -221,4 +221,24 @@ public class TableRow implements Comparable<TableRow> {
return e; return e;
} }
/**
* Check if rows differ in only one therm
*
* @param r2 the other row
* @return the matching literal or -1
*/
public int checkCompatible(TableRow r2) {
if (getOptimizedFlags() != r2.getOptimizedFlags())
return -1;
int difIndex = -1;
for (int i = 0; i < size(); i++) {
if (!get(i).equals(r2.get(i))) {
if (difIndex >= 0)
return -1;
difIndex = i;
}
}
return difIndex;
}
} }