Автор Тема: Объединение временных массивов...  (Прочитано 1878 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн docker

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.dedowskstudio.ru
Объединение временных массивов...
« : 13 Октября 2004, 13:23:54 »
Добрый день.
есть пара временных массивов в виде:

Array
(
    [
0] => Array
        (
            [
from] => 1097562600
            
[to] => 1097577000
        
)

    [
1] => Array
        (
            [
from] => 1097578800
            
[to] => 1097582400
        
)

    [
2] => Array
        (
            [
from] => 1097583000
            
[to] => 1097586300
        
)

)

Array
(
    [
0] => Array
        (
            [
from] => 1097562501
            
[to] => 1097577000
        
)

    [
1] => Array
        (
            [
from] => 1097578800
            
[to] => 1097582400
        
)

    [
2] => Array
        (
            [
from] => 1097583000
            
[to] => 1097586300
        
)

)



from - время начала интервала
to - время конца интервала
Требуется выполнить простейшую оперцию из теории множеств - объединение!

Т.е. получить результирующий массив отрезков, которые бы внутри себя содержали все отрезки из обоих массивов...

Кто-нибудь сталкивался с подобной задачей? Каков примерный алгоритм решения?

Если брать решение в лоб, то получается так:
-взять первый отрезок первого массива
-проверить не накладывается ли на него какой-нибудь отрезок из 2-го массива
-если накладывается(и выходит за границы), то первый элемент результирующего массива будет объединять эти отрезки
- проверить, остались ли отрезки первого массивы, вне границ первого результирующего отрезка
- если остались, то взять этот первый элемент и аналогично сравнить его со всеми элементами 2-го массива, которые выходят за его границы....

Каждый из этих пунктов - это уже объемный кусок кода. Может даже реккурсию придется применять....

Интересно, есть какие-нибудь более простые варианты решения данной задачи....

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28