@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, и такие элементы идут подряд К раз (и больше), то эти элементы сохраняются, а остальные отбрасываются.
Как это лучше сделать?
  • Вопрос задан
  • 154 просмотра
Решения вопроса 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. Лишниее выбросить.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы