From d864cc115842c84b1905ce309dad1d011af86208 Mon Sep 17 00:00:00 2001 From: hneemann Date: Wed, 8 Mar 2017 19:54:51 +0100 Subject: [PATCH] minor refactoring of qmc --- .../analyse/quinemc/QuineMcCluskey.java | 18 +---------------- .../digital/analyse/quinemc/TableRow.java | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/main/java/de/neemann/digital/analyse/quinemc/QuineMcCluskey.java b/src/main/java/de/neemann/digital/analyse/quinemc/QuineMcCluskey.java index 1e468fe2c..722c160f8 100644 --- a/src/main/java/de/neemann/digital/analyse/quinemc/QuineMcCluskey.java +++ b/src/main/java/de/neemann/digital/analyse/quinemc/QuineMcCluskey.java @@ -134,7 +134,7 @@ public class QuineMcCluskey { TableRow r1 = list.get(i); TableRow r2 = list.get(j); - int index = checkCompatible(r1, r2); + int index = r1.checkCompatible(r2); if (index >= 0) { // can optimize; TableRow newRow = new TableRow(r1); @@ -170,22 +170,6 @@ public class QuineMcCluskey { 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 public String toString() { StringBuilder sb = new StringBuilder(); diff --git a/src/main/java/de/neemann/digital/analyse/quinemc/TableRow.java b/src/main/java/de/neemann/digital/analyse/quinemc/TableRow.java index adb9c8541..d8b4bc535 100644 --- a/src/main/java/de/neemann/digital/analyse/quinemc/TableRow.java +++ b/src/main/java/de/neemann/digital/analyse/quinemc/TableRow.java @@ -221,4 +221,24 @@ public class TableRow implements Comparable { 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; + } }