Example #1
0
  @Override
  protected boolean operateInternal(Set<Triangle> triangles) {

    Triangle winner = random.choice(triangles);

    float perfectness =
        new BigDecimal("2").divide(winner.perfectness(), MathContext.DECIMAL128).floatValue();
    float myRate = Math.max(perfectness, rate);
    if (!random.rate(myRate)) {
      return false;
    }

    for (Triangle t : triangles) {
      if (t == winner) {
        continue;
      }
      Segment common = TriangleUtils.segmentInCommon(winner, t);
      if (common != null) {

        boolean swapped = swap(triangles, winner, t, common);
        return swapped;
      }
    }

    return false;
  }