Задать вопрос
@kreg1g

Как найти все ближайшие связки чисел из массива?

у меня есть массив данных такого типа (допустим это минуты, без секунд)
1 2 2 2 5 8 12 12 13 15 15 21 25
Как я на выходе могу получить числа связанные между собой до 1 минуты, т.е. в данном случае 1 и 2, 12 и 13, 15 (идеальный результат это 1, 12, 15)

Не обязательно код на python
  • Вопрос задан
  • 113 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@kreg1g Автор вопроса
Всем спасибо, чет тупанул, действительно ведь просто в общем. Сделал в итоге вот так на питоне, мб кому пригодится:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

d=[1, 12, 13, 15, 15, 21, 2, 2, 2, 5, 8, 12,  25, 85.181, 86.081, 87.181, 88.182]
d.sort()
sv = 0
svtime=1 #диапазон связи
prev = None
for value in d:
    if prev != None:
        if((value-prev)<=svtime):
            if sv == 0:
                print(prev)
                sv = 1
        else:
            sv = 0
    prev = value

OUT >>> 1, 12, 15
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Stalker_RED
@Stalker_RED
Ответ написан
Комментировать
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
1. отсортировать список по возрастанию, если он не отсортирован
2. обходим список и смотрим разницу "текущий элемент минус предыдущий".
3. если разница равна 1 то записываем "предыдущий элемент" в новый список со связками.

не понятно почему для ряда 1 2 2 2 5 8 12 12 13 15 15 21 25 правильный вариант 1, 12, 15
так как судя по условиям, чтобы было 15, должно быть 15, 16 в исходных данных.
Ответ написан
Комментировать
adugin
@adugin Куратор тега Python
nums = '1 2 2 2 5 8 12 12 13 15 15 21 25 26 32'
nums = sorted(map(int, nums.split()))

result = [x1 for x1, x2 in zip(nums[:-1], nums[1:]) if x2 - x1 == 1]

print(*result)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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