private static Evaluator<FunctionalHypothesis<Integer, Boolean>> getEvaluator( Constraints<Integer, Boolean> constraints) { return func -> constraints.size() - constraints .stream() .mapToDouble(c -> func.getRepresentation().apply(c.left).equals(c.right) ? 1 : 0) .sum(); }
private Constraints<Integer, Boolean> shouldEqual4() { return Constraints.<Integer, Boolean>builder() .add(1, false) .add(2, false) .add(3, false) .add(4, true) .add(5, false) .add(6, false) .add(7, false) .add(8, false) .add(9, false) .add(10, false) .add(20, false) .add(100, false) .add(10000, false) .add(1000000, false) .add(100421, false) .add(100012, false) .build(); }
private Constraints<Integer, Boolean> shouldBeDivisableBy2() { return Constraints.<Integer, Boolean>builder() .add(1, false) .add(2, true) .add(3, false) .add(4, true) .add(5, false) .add(6, true) .add(7, false) .add(8, true) .add(9, false) .add(10, true) .add(20, true) .add(100, true) .add(10000, true) .add(1000000, true) .add(100421, false) .add(100012, true) .add(100013, false) .build(); }