package context.arch.intelligibility.reducers; import context.arch.intelligibility.expression.DNF; import context.arch.intelligibility.expression.Reason; public class ShortestDReducer extends DisjunctionReducer { @Override public DNF apply(DNF original) { int minIndex = 0; int minNumDiff = Integer.MAX_VALUE; for (int i = 0; i < original.size(); i++) { Reason trace = original.get(i); int numDiff = trace.size(); if (numDiff < minNumDiff) { // pick fewest differences minIndex = i; minNumDiff = numDiff; } else if (numDiff == minNumDiff && // if same # of differences original.get(i).size() < original.get(minIndex).size()) { // then pick from shortest trace minIndex = i; } } return new DNF(original.get(minIndex)); } }