Sobes.tech
Intern
22

Псевдокод sum_series(a={{1, 2}, {5, 1}}, b={{2, 4}, {3, 6}, {9, 7}}) -> {{1, 2}, {2, 6}, {3, 8}, {5, 7}, {9, 8}} def sum_series(a, b): result = [] i , j = 0, 0 val_a, val_b = 0, 0 while i < len(a) or j < len(b): a_next = a[i][0] if i < len(a) else float('inf') b_next = b[j][0] if j < len(b) else float('inf') if a_next <= b_next: val_a = a[i][1] t = a[i][0] i += 1 else: val_b = b[j][1] t = b[j][0] j += 1 result.append((t, val_a + val_b)) return result

Компании, где спрашивали
Яндекс

Ответ от нейросети

sobes.tech AI

Данный псевдокод реализует слияние двух временных рядов, представленных в виде списков пар (время, значение). Цель — получить объединённый ряд, где для каждого уникального времени сумма значений из обоих рядов.

Идея алгоритма:

  • Используются два указателя i и j для прохода по спискам a и b.
  • На каждом шаге выбирается минимальное время из текущих элементов обоих списков.
  • Обновляется соответствующее значение val_a или val_b.
  • В результирующий список добавляется кортеж (время, val_a + val_b).

Пример на Python:

from typing import List, Tuple

def sum_series(a: List[Tuple[int, int]], b: List[Tuple[int, int]]) -> List[Tuple[int, int]]:
    result = []
    i, j = 0, 0
    val_a, val_b = 0, 0

    while i < len(a) or j < len(b):
        a_next = a[i][0] if i < len(a) else float('inf')
        b_next = b[j][0] if j < len(b) else float('inf')

        if a_next <= b_next:
            val_a = a[i][1]
            t = a[i][0]
            i += 1
        else:
            val_b = b[j][1]
            t = b[j][0]
            j += 1

        result.append((t, val_a + val_b))

    return result

# Пример вызова
print(sum_series([(1, 2), (5, 1)], [(2, 4), (3, 6), (9, 7)]))
# Вывод: [(1, 2), (2, 6), (3, 8), (5, 7), (9, 8)]

Такой подход полезен для объединения и суммирования данных по времени из разных источников.