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

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект