Middle
Exercice pratique : étant donné un tableau de points avec les champs time et value. Il faut identifier des groupes de points ayant la même valeur et ne conserver que le début et la fin de chaque groupe (pour optimiser la construction d'un graphique linéaire).
sobes.tech IA
Réponse de l'IA
Для оптимизации построения линейного графика нужно сгруппировать точки по одинаковому значению 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 и сохраняет только начало и конец каждой группы.