middleHeight method

double middleHeight(
  1. List<double> list,
  2. double delta
)

Implementation

double middleHeight(List<double> list, double delta) {
  if (list.isEmpty) return 0;

  final Map<double, int> counts = {};

  for (var item in list) {
    bool found = false;

    for (var key in counts.keys) {
      if ((item - key).abs() <= delta) {
        counts[key] = counts[key]! + 1;
        found = true;
        break;
      }
    }

    if (!found) {
      counts[item] = 1;
    }
  }

  int maxCount = counts.values.reduce((a, b) => a > b ? a : b);

  List<double> freqList = counts.entries.where((entry) => entry.value == maxCount).map((entry) => entry.key).toList();

  if (freqList.isEmpty) return 0;
  final sum = freqList.reduce((a, b) => a + b);
  return sum / freqList.length;
}