Sobes.tech
Middle
29

Практикалық тапсырма: уақыт және мән өрістері бар нүктелер массиві берілген. Бір мәні бар нүктелер топтарын анықтап, әр топтың тек басталуы мен соңы ғана қалдырыңыз (сызықтық график құруды оңтайландыру үшін).

Сұралған компаниялар
Бюро 1440Бюро 1440

AI-дан жауап

sobes.tech AI

Для оптимизации построения линейного графика нужно сгруппировать точки по одинаковому значению value и для каждой группы оставить только первую и последнюю точку по времени. Это позволит сократить количество точек без потери формы графика.

Пример решения на JavaScript:

function optimizePoints(points) {
  if (points.length === 0) return [];

  const result = [];
  let start = points[0];
  let prev = points[0];

  for (let i = 1; i < points.length; i++) {
    if (points[i].value !== prev.value) {
      // Конец группы
      result.push(start);
      result.push(prev);
      start = points[i];
    }
    prev = points[i];
  }

  // Добавляем последнюю группу
  result.push(start);
  result.push(prev);

  // Убираем дубликаты, если группа из одной точки
  return result.filter((point, index, arr) => {
    if (index === 0) return true;
    const prevPoint = arr[index - 1];
    return !(point.time === prevPoint.time && point.value === prevPoint.value);
  });
}

// Пример использования:
const data = [
  { time: 1, value: 10 },
  { time: 2, value: 10 },
  { time: 3, value: 15 },
  { time: 4, value: 15 },
  { time: 5, value: 15 },
  { time: 6, value: 10 },
];

console.log(optimizePoints(data));

Этот код проходит по массиву точек, определяет группы с одинаковым value и сохраняет только начало и конец каждой группы.