Не....
Ни фига не работает.
<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 отрезка на прямой.