Показать сообщение отдельно
  #10 (permalink)  
Старый 15.10.2021, 15:31
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,754

Не....
Ни фига не работает.
<pre>
<script>
    const data = [{
                x1: 1,
                x2: 4,
                order: 0
            },
             {         // Добавил этот
                x1: 5,
                x2: 11,
                order: 0
            },
           {
                x1: 7,
                x2: 10,
                order: 0
            },
            {
                x1: 5,
                x2: 8,
                order: 0
            },
            {
                x1: 10,
                x2: 13,
                order: 0
            },
            {
                x1: 8,
                x2: 11,
                order: 0
            },
            {
                x1: 8,
                x2: 11,
                order: 0
            }
        ];
        
        
let orders = []
data.forEach ((x, i) => {
 let no = orders.findIndex (o => o.every (ot => data[ot].x1>=x.x2 || data[ot].x2 <= x.x1) );
 if (no>=0) 
    orders[no].push(i);
  else 
    no = orders.push([i]) - 1;
  x.order = no;

  }
 )
document.write(JSON.stringify(data, "", 1))
</script>
</pre>

Есть условие
Сообщение от valya2021
нужно разместить как можно больше отрезков на одной прямой
Можно назначить order = 0 (у Рони 1) трем отрезкам 0, 2 и 5
А отрезку 1 - order = 1.

А наши алгоритмы размещают максимум 2 отрезка на прямой.
Ответить с цитированием