Найти среднее значение каждого закрытого диапазона в массиве закрытых диапазонов

#ios #swift

#iOS #swift

Вопрос:

У меня есть массив ClosedRange Double s следующим образом:

 var ranges = [ClosedRange<Double>]()
  

Есть ли быстрый способ получить среднее значение каждого ClosedRange из них без необходимости перебирать каждый элемент в массиве, а затем каждое число в каждом ClosedRange ?

Например, если массив:

 [ClosedRange(1...3), ClosedRange(4...5)]
  

Я хотел бы получить: 2, 4.5

Комментарии:

1. Что вы подразумеваете под «каждым числом в закрытом диапазоне»? Вам просто нужны верхняя и нижняя границы.

Ответ №1:

Вам просто нужно принудительно удвоить нижнюю и верхнюю границы, суммировать их, а затем разделить на два:

 let ranges = [1...3, 4...5]
let avgs = ranges.map {
    (Double($0.lowerBound)   Double($0.upperBound)) / 2
}
print(avgs)  // "[2.0, 4.5]n"
  

Если границы вашего диапазона уже удваиваются:

 let ranges = [1.0...3.0, 4.0...5.0]
let avgs = ranges.map {
    ($0.lowerBound   $0.upperBound) / 2
}
print(avgs)  // "[2.0, 4.5]n"