@Klavikus

Как отсортировать одномерный массив точек, с учётом расстояния между ними?

Имеется набор точек следующего вида:
source_list = [[11], [14], [15], [17], [27], [28], [32], [52], [53], [54], [55], [56], [57], [75], [90], [97]]
Хочу получить следующее:
result_list = [[52], [53], [54], [55], [56], [57]]
Условия:
max_D = 9
К = 4
Если расстояние между элементами меньше параметра max_D, и такие элементы идут подряд К раз (и больше), то эти элементы сохраняются, а остальные отбрасываются.
Как это лучше сделать?
  • Вопрос задан
  • 129 просмотров
Решения вопроса 1
@dimoff66
Кратко о себе: Я есть
var sourceList = [11, 14, 15, 17, 27, 28, 32, 52, 53, 54, 55, 56, 57, 75, 90, 97];
   sourceList.sort();

   var max_d = 9, K = 4;
   
   var result = [];
   var sequence = [sourceList[0] - max_d];

   sourceList.forEach(num => {
      if(num - sequence[sequence.length - 1] >= max_d) {
         if(sequence.length >= K) result = sequence;
         sequence = [];
      }
      sequence.push(num);
   });
   if(sequence.length >= K) result = sequence;

   console.log(result);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
1. Отсортировать
2. Пройтись по всему списку, записывая для каждого непрерывного куска начало, конец, и кол-во элементов.
3. Найти кусок с самым большим кол-вом, или самой большой длиной, или что вам там нужно.
4. Лишниее выбросить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Poteha Labs Москва
от 100 000 до 160 000 руб.
YLab Тольятти
от 90 000 до 150 000 руб.
PiRL Ventures Москва
от 100 000 руб.