Создайте массив из Pressure
(сотней), инициализированный следующим образом:
class Pressure
{
public double Low;
public double Hi;
};
Pressure[] PressuresA = new[] {
new Pressure { Low = 10.5, Hi = 16.5 },
new Pressure { Low = 11.2, Hi = 11.4 },
new Pressure { Low = 10.3, Hi = 17.5 }
};
Pressure[] PressuresB = new[] {
new Pressure { Low = 10.5, Hi = 16.5 },
new Pressure { Low = 8.1, Hi = 10.4 },
new Pressure { Low = 10.8, Hi = 11.3 }
};
Ищем функцию, которая возвращает объект Pressure
с Low
/Hi
в качестве перекрывающихся значений всех элементов массива. Если хотя бы один элемент находится за пределами перекрывающегося диапазона, возвращаемый Low
/Hi
должен быть 0
/0
.
Вышеупомянутое PressureA
должно вернуться 11.2, 11.4
Вышеупомянутое PressureB
должно вернуться 0, 0
Есть предложения?
Спасибо
Дэнни
Мы можем найти максимум среди всех Low
и минимум среди всех High
и проверить, является ли это допустимым диапазоном:
using System.Linq;
...
var pressures = PressuresA;
double maxLow = pressures.Max(item => item.Low);
double minHi = pressures.Min(item => item.Hi);
Pressure result = maxLow > minHigh
? new Pressure() // invalid range
: new Pressure() { Low = maxLow, Hi = minHi };
Что ж, если существует перекрывающийся диапазон, я ожидаю, что результат «низкий» будет самым высоким из всех «низких» компонентов, а результат «высокий» будет самым низким из всех «высоких» компонентов. Затем вам просто нужно проверить, меньше ли полученный минимум максимума или равен ему... если да, то это и есть результат, в противном случае это 0/0.