code: private SortedMap<Double, List<Island>> makeDistanceMap(Collection<Island> competingIslands) {
          SortedMap<Double, List<Island>> distanceMap = new TreeMap<>();
          for (Island isl : competingIslands) {
              Coordinate leftEnd = isl.getLeftEnd();
              double ratio = ((leftEnd.column + 1) / (double) (leftEnd.row + 1));
              double b2 = Math.log(ratio) / Math.log(2);
              double distanceToIdealLine = Math.abs(b2);
              distanceMap.computeIfAbsent(distanceToIdealLine, d -> new ArrayList<>()).add(isl);
          }
          return distanceMap;
      }
docs: TODO: but the ideal line may have moved (due to additions/deletions).