From 88731479473595399a633f33f0615bcf9a18414a Mon Sep 17 00:00:00 2001 From: Lusina <12752833+BrianLusina@users.noreply.github.com> Date: Sat, 27 Dec 2025 07:21:40 +0300 Subject: [PATCH 1/4] feat(data structures, streams): moving average --- .../streams/moving_average/README.md | 62 ++++++++++++++++++ .../streams/moving_average/__init__.py | 34 ++++++++++ .../examples/moving_average_example_1.png | Bin 0 -> 166592 bytes .../moving_average/test_moving_average.py | 27 ++++++++ 4 files changed, 123 insertions(+) create mode 100644 datastructures/streams/moving_average/README.md create mode 100644 datastructures/streams/moving_average/__init__.py create mode 100644 datastructures/streams/moving_average/images/examples/moving_average_example_1.png create mode 100644 datastructures/streams/moving_average/test_moving_average.py diff --git a/datastructures/streams/moving_average/README.md b/datastructures/streams/moving_average/README.md new file mode 100644 index 00000000..d937a3e2 --- /dev/null +++ b/datastructures/streams/moving_average/README.md @@ -0,0 +1,62 @@ +# Moving Average from Data Stream + +Given a stream of integers and a window size, calculate the moving average of all integers in the sliding window. +Implement a class called MovingAverage that has the following methods: + +Constructor (int size): This constructor initializes the object with the specified window size. + +double next (int val): This method takes an integer value as input and returns the moving average of the last size +values from the stream. + +## Constraints + +- 1 <= size <= 100 +- -10^3 <= val <= 10^3 +- At most 10^2 calls will be made to next + +## Examples + +![Example 1](./images/examples/moving_average_example_1.png) + +## Solution + +The algorithm calculates the moving average of the most recent values within a fixed-size window. It employs a queue to +store these values and maintains a running sum for efficient computation. Each time a new value is added to the window, +it is appended to the queue, and the running sum is updated accordingly. If the queue exceeds the specified size (i.e., +the window is full), the oldest value is removed from the queue, and the sum is adjusted by subtracting this value. The +moving average is then calculated by dividing the running sum by the number of values in the queue. This approach ensures +that the moving average is updated, achieving constant time complexity for each operation. + +1. **Constructor**: The constructor initializes the following variables: + - _size_: This represents the window size, the maximum number of recent values for calculating the moving average. + - _queue_: A queue data structure stores the most recent values up to the specified window size. The queue supports + efficient operations for adding new values to the end and removing the oldest value from the front, essential for + maintaining the sliding window. + - _window_sum_: This keeps a running sum of the values currently in the window. This allows the moving average to be + calculated efficiently without the need to sum all values repeatedly. + +2. The **next** method: The next method calculates the moving average by following these steps: + - Enqueue the new value (val) to queue and add it to window_sum. This effectively extends the current sliding window + to include the new value. + - If the number of elements in queue exceeds size (indicating the window is full), remove the oldest value from queue + and update window_sum by subtracting this value. This ensures the queue size stays within the specified window size. + - Compute the moving average as window_sum / len(queue). Use floating-point division to ensure the result is a float. + +### Time Complexity + +1. **Constructor**: Initializing the MovingAverage instance with a given size takes O(1) time. This is because the operation + involves only setting the size, initializing an empty queue, and initializing the sum. +2. **Next method**: + - Appending a value: Adding a value to the queue takes O(1) time as operations like append and popleft are optimized + for constant time execution in a queue. + - Removing the oldest value: If the window is full, removing the oldest value also takes O(1) time, as popleft is a + constant time operation in a queue. + - Calculating the moving average: This step involves dividing window_sum by the number of elements in the queue, + which is an O(1) operation. + +Thus the time complexity of the next method is O(1). + +### Space Complexity + +The queue holds up to _size_ elements at any given time (i.e., the number of elements in the sliding window). Therefore, +the space complexity of the queue is O(size), where size is the maximum window size. diff --git a/datastructures/streams/moving_average/__init__.py b/datastructures/streams/moving_average/__init__.py new file mode 100644 index 00000000..6cece728 --- /dev/null +++ b/datastructures/streams/moving_average/__init__.py @@ -0,0 +1,34 @@ +from typing import Deque +from collections import deque + + +class MovingAverage: + def __init__(self, size): + """ + Initializes the moving average object + Args: + size (int): The size of the moving average + """ + self.queue: Deque[int] = deque() + self.size: int = size + self.window_sum: float = 0.0 + + def next(self, val: int) -> float: + """ + Adds a value to the stream and returns the moving average of the stream + Args: + val (int): The value to add to the stream + Returns: + float: The moving average of the stream + """ + if len(self.queue) == self.size: + # remove oldest value + oldest_value = self.queue.popleft() + self.window_sum -= oldest_value + + # add new value to queue + self.queue.append(val) + self.window_sum += val + + # calculate average + return self.window_sum / len(self.queue) diff --git a/datastructures/streams/moving_average/images/examples/moving_average_example_1.png b/datastructures/streams/moving_average/images/examples/moving_average_example_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c27f7ae4267ffadc0c6c6012c96c886b7a7f91af GIT binary patch literal 166592 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 literal 0 HcmV?d00001 diff --git a/datastructures/streams/moving_average/test_moving_average.py b/datastructures/streams/moving_average/test_moving_average.py new file mode 100644 index 00000000..bf3706d6 --- /dev/null +++ b/datastructures/streams/moving_average/test_moving_average.py @@ -0,0 +1,27 @@ +import unittest +from typing import List, Tuple +from parameterized import parameterized +from datastructures.streams.moving_average import MovingAverage + + +TEST_CASES = [ + (3, [(1, 1.00000), (10, 5.50000), (3, 4.66667), (5, 6.00000)]), + (2, [(7, 7.00000), (14, 10.50000), (21, 17.50000), (28, 24.50000), (35, 31.50000)]), + (3, [(5, 5.00000), (10, 7.50000), (15, 10.00000), (20, 15.00000)]), + (10, [(1, 1.00000), (2, 1.50000)]), + (100, [(-100, -100.00000)]), +] + + +class MyTestCase(unittest.TestCase): + @parameterized.expand(TEST_CASES) + def test_moving_average(self, size: int, data_to_expected: List[Tuple[int, float]]): + moving_average = MovingAverage(size) + for data, expected in data_to_expected: + actual = moving_average.next(data) + round(actual, 5) + self.assertEqual(expected, round(actual, 5)) + + +if __name__ == "__main__": + unittest.main() From 156c662654679398fb69abb03d67187b92065aec Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Sat, 27 Dec 2025 04:22:01 +0000 Subject: [PATCH 2/4] updating DIRECTORY.md --- DIRECTORY.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index 73f289bb..54827666 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -325,6 +325,8 @@ * [Test Min Stack](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/stacks/minstack/test_min_stack.py) * [Test Stacks](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/stacks/test_stacks.py) * Streams + * Moving Average + * [Test Moving Average](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/streams/moving_average/test_moving_average.py) * Stream Checker * [Test Stream Checker](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/streams/stream_checker/test_stream_checker.py) * Timemap From 6168b4a9ad2e6394ed88f7f059a592d82fadfb1f Mon Sep 17 00:00:00 2001 From: Lusina <12752833+BrianLusina@users.noreply.github.com> Date: Sat, 27 Dec 2025 07:44:44 +0300 Subject: [PATCH 3/4] feat(data structures, streams): variations of moving average --- datastructures/circular_buffer/__init__.py | 56 ++++--------------- .../circular_buffer/circular_buffer.py | 43 ++++++++++++++ datastructures/circular_buffer/exceptions.py | 6 ++ .../circular_buffer}/test_circular_buffer.py | 0 .../streams/moving_average/__init__.py | 38 ++----------- .../exponential_moving_average.py | 28 ++++++++++ .../streams/moving_average/moving_average.py | 34 +++++++++++ .../moving_average_with_buffer.py | 38 +++++++++++++ .../moving_average/test_moving_average.py | 13 +++++ .../moving_average/weighted_moving_average.py | 46 +++++++++++++++ 10 files changed, 224 insertions(+), 78 deletions(-) create mode 100755 datastructures/circular_buffer/circular_buffer.py create mode 100644 datastructures/circular_buffer/exceptions.py rename {tests/datastructures => datastructures/circular_buffer}/test_circular_buffer.py (100%) create mode 100644 datastructures/streams/moving_average/exponential_moving_average.py create mode 100644 datastructures/streams/moving_average/moving_average.py create mode 100644 datastructures/streams/moving_average/moving_average_with_buffer.py create mode 100644 datastructures/streams/moving_average/weighted_moving_average.py diff --git a/datastructures/circular_buffer/__init__.py b/datastructures/circular_buffer/__init__.py index 2d8537e7..fa64e9ed 100755 --- a/datastructures/circular_buffer/__init__.py +++ b/datastructures/circular_buffer/__init__.py @@ -1,45 +1,11 @@ -class BufferFullException(Exception): - pass - - -class BufferEmptyException(Exception): - pass - - -class CircularBuffer: - def __init__(self, size): - self.buffer = bytearray(size) - self.read_point = 0 - self.write_point = 0 - - def _update_buffer(self, data): - """ - Protected helper method for Python 2/3 - """ - try: - self.buffer[self.write_point] = data - except TypeError: - self.buffer[self.write_point] = ord(data) - - def clear(self): - self.buffer = bytearray(len(self.buffer)) - - def write(self, data): - if all(self.buffer): - raise BufferFullException - self._update_buffer(data) - self.write_point = (self.write_point + 1) % len(self.buffer) - - def read(self): - if not any(self.buffer): - raise BufferEmptyException - data = chr(self.buffer[self.read_point]) - self.buffer[self.read_point] = 0 - self.read_point = (self.read_point + 1) % len(self.buffer) - return data - - def overwrite(self, data): - self._update_buffer(data) - if all(self.buffer) and self.read_point == self.write_point: - self.read_point = (self.read_point + 1) % len(self.buffer) - self.write_point = (self.write_point + 1) % len(self.buffer) +from datastructures.circular_buffer.circular_buffer import CircularBuffer +from datastructures.circular_buffer.exceptions import ( + BufferFullException, + BufferEmptyException, +) + +__all__ = [ + "CircularBuffer", + "BufferFullException", + "BufferEmptyException", +] diff --git a/datastructures/circular_buffer/circular_buffer.py b/datastructures/circular_buffer/circular_buffer.py new file mode 100755 index 00000000..fc782f11 --- /dev/null +++ b/datastructures/circular_buffer/circular_buffer.py @@ -0,0 +1,43 @@ +from datastructures.circular_buffer.exceptions import ( + BufferFullException, + BufferEmptyException, +) + + +class CircularBuffer: + def __init__(self, size): + self.buffer = bytearray(size) + self.read_point = 0 + self.write_point = 0 + + def _update_buffer(self, data): + """ + Protected helper method for Python 2/3 + """ + try: + self.buffer[self.write_point] = data + except TypeError: + self.buffer[self.write_point] = ord(data) + + def clear(self): + self.buffer = bytearray(len(self.buffer)) + + def write(self, data): + if all(self.buffer): + raise BufferFullException + self._update_buffer(data) + self.write_point = (self.write_point + 1) % len(self.buffer) + + def read(self): + if not any(self.buffer): + raise BufferEmptyException + data = chr(self.buffer[self.read_point]) + self.buffer[self.read_point] = 0 + self.read_point = (self.read_point + 1) % len(self.buffer) + return data + + def overwrite(self, data): + self._update_buffer(data) + if all(self.buffer) and self.read_point == self.write_point: + self.read_point = (self.read_point + 1) % len(self.buffer) + self.write_point = (self.write_point + 1) % len(self.buffer) diff --git a/datastructures/circular_buffer/exceptions.py b/datastructures/circular_buffer/exceptions.py new file mode 100644 index 00000000..c3b8d396 --- /dev/null +++ b/datastructures/circular_buffer/exceptions.py @@ -0,0 +1,6 @@ +class BufferFullException(Exception): + pass + + +class BufferEmptyException(Exception): + pass diff --git a/tests/datastructures/test_circular_buffer.py b/datastructures/circular_buffer/test_circular_buffer.py similarity index 100% rename from tests/datastructures/test_circular_buffer.py rename to datastructures/circular_buffer/test_circular_buffer.py diff --git a/datastructures/streams/moving_average/__init__.py b/datastructures/streams/moving_average/__init__.py index 6cece728..152d17e4 100644 --- a/datastructures/streams/moving_average/__init__.py +++ b/datastructures/streams/moving_average/__init__.py @@ -1,34 +1,6 @@ -from typing import Deque -from collections import deque +from datastructures.streams.moving_average.moving_average_with_buffer import ( + MovingAverageWithBuffer, +) +from datastructures.streams.moving_average.moving_average import MovingAverage - -class MovingAverage: - def __init__(self, size): - """ - Initializes the moving average object - Args: - size (int): The size of the moving average - """ - self.queue: Deque[int] = deque() - self.size: int = size - self.window_sum: float = 0.0 - - def next(self, val: int) -> float: - """ - Adds a value to the stream and returns the moving average of the stream - Args: - val (int): The value to add to the stream - Returns: - float: The moving average of the stream - """ - if len(self.queue) == self.size: - # remove oldest value - oldest_value = self.queue.popleft() - self.window_sum -= oldest_value - - # add new value to queue - self.queue.append(val) - self.window_sum += val - - # calculate average - return self.window_sum / len(self.queue) +__all__ = ["MovingAverage", "MovingAverageWithBuffer"] diff --git a/datastructures/streams/moving_average/exponential_moving_average.py b/datastructures/streams/moving_average/exponential_moving_average.py new file mode 100644 index 00000000..d80b9a00 --- /dev/null +++ b/datastructures/streams/moving_average/exponential_moving_average.py @@ -0,0 +1,28 @@ +class ExponentialMovingAverage: + """ + The Exponential Moving Average (EMA) is widely used in finance and signal processing because it reacts faster to + recent price changes than a simple moving average. + + The beauty of the EMA is its efficiency: it does not require a buffer or a window of previous values. You only need + to store the previous EMA result. This makes the time and space complexity both O(1). + + Why use EMA? + 1. Reduced Lag: Because it weights the most recent data most heavily, it catches trend reversals much sooner than an SMA. + 2. Memory Efficiency: You don't need to store a list of numbers; you only need to store one variable (self.ema). + 3. Smoothness: It creates a smooth curve that isn't as sensitive to an old "outlier" dropping out of the window (a common issue with SMA). + """ + + def __init__(self, size: int): + self.size = size + self.alpha = 2 / (size + 1) + self.ema = None # Initialized with the first value received + + def next(self, val: int) -> float: + if self.ema is None: + # The first value acts as the starting point + self.ema = float(val) + else: + # Apply the EMA formula + self.ema = (val * self.alpha) + (self.ema * (1 - self.alpha)) + + return self.ema diff --git a/datastructures/streams/moving_average/moving_average.py b/datastructures/streams/moving_average/moving_average.py new file mode 100644 index 00000000..c4103890 --- /dev/null +++ b/datastructures/streams/moving_average/moving_average.py @@ -0,0 +1,34 @@ +from typing import Deque +from collections import deque + + +class MovingAverage: + def __init__(self, size: int): + """ + Initializes the moving average object + Args: + size (int): The size of the moving average + """ + self.queue: Deque[int] = deque() + self.size: int = size + self.window_sum: float = 0.0 + + def next(self, val: int) -> float: + """ + Adds a value to the stream and returns the moving average of the stream + Args: + val (int): The value to add to the stream + Returns: + float: The moving average of the stream + """ + if len(self.queue) == self.size: + # remove oldest value + oldest_value = self.queue.popleft() + self.window_sum -= oldest_value + + # add new value to queue + self.queue.append(val) + self.window_sum += val + + # calculate average + return self.window_sum / len(self.queue) diff --git a/datastructures/streams/moving_average/moving_average_with_buffer.py b/datastructures/streams/moving_average/moving_average_with_buffer.py new file mode 100644 index 00000000..83af742f --- /dev/null +++ b/datastructures/streams/moving_average/moving_average_with_buffer.py @@ -0,0 +1,38 @@ +class MovingAverageWithBuffer: + """ + Using a Circular Buffer (implemented with a fixed-size list) is an excellent way to optimize memory. Instead of + dynamically resizing or shifting elements, we use a fixed array and a pointer that "wraps around" using the modulo + operator (index(modsize)). + + This approach is often preferred in embedded systems or high-performance scenarios because it avoids the overhead of + frequent memory allocations. + + The expression self.head = (self.head + 1) % self.size ensures that if our size is 3, the pointer sequence will be: + 0 → 1 → 2 → 0 → 1... + + This effectively "recycles" the array positions, making it behave like a continuous loop. + """ + + def __init__(self, size: int): + # Pre-allocate a list of zeros + self.size = size + self.buffer = [0] * size + self.head = 0 # Pointer to the next position to overwrite + self.count = 0 # Track how many elements we've actually added + self.current_sum = 0.0 + + def next(self, val: int) -> float: + # If the buffer is full, subtract the value we are about to overwrite + if self.count == self.size: + self.current_sum -= self.buffer[self.head] + else: + self.count += 1 + + # Overwrite the old value at the head pointer + self.buffer[self.head] = val + self.current_sum += val + + # Move the pointer to the next index, wrapping around if at the end + self.head = (self.head + 1) % self.size + + return self.current_sum / self.count diff --git a/datastructures/streams/moving_average/test_moving_average.py b/datastructures/streams/moving_average/test_moving_average.py index bf3706d6..3d54bf77 100644 --- a/datastructures/streams/moving_average/test_moving_average.py +++ b/datastructures/streams/moving_average/test_moving_average.py @@ -2,6 +2,9 @@ from typing import List, Tuple from parameterized import parameterized from datastructures.streams.moving_average import MovingAverage +from datastructures.streams.moving_average.moving_average_with_buffer import ( + MovingAverageWithBuffer, +) TEST_CASES = [ @@ -22,6 +25,16 @@ def test_moving_average(self, size: int, data_to_expected: List[Tuple[int, float round(actual, 5) self.assertEqual(expected, round(actual, 5)) + @parameterized.expand(TEST_CASES) + def test_moving_average_with_buffer( + self, size: int, data_to_expected: List[Tuple[int, float]] + ): + moving_average = MovingAverageWithBuffer(size) + for data, expected in data_to_expected: + actual = moving_average.next(data) + round(actual, 5) + self.assertEqual(expected, round(actual, 5)) + if __name__ == "__main__": unittest.main() diff --git a/datastructures/streams/moving_average/weighted_moving_average.py b/datastructures/streams/moving_average/weighted_moving_average.py new file mode 100644 index 00000000..a33dff68 --- /dev/null +++ b/datastructures/streams/moving_average/weighted_moving_average.py @@ -0,0 +1,46 @@ +class WeightedMovingAverage: + """ + Weight Assignment: The most recent value always gets the maximum weight (self.size), and weights + decrease as we look further back in time. + + The Denominator: Unlike the simple moving average where you divide by the count, here you divide by the sum of the + weights applied. + + For a full window of size 3, weights are 3, 2, and 1. Sum = 6. + Before the window is full, we use a current_denominator to ensure accuracy. + + The WMA is slightly more expensive (O(size) per next() call) because we have to re-sum the weighted values each time. + If you need O(1) performance for a weighted average, you might look into an Exponential Moving Average (EMA), which + uses a smoothing factor (α) to give more weight to recent data without needing to store the full history. + """ + + def __init__(self, size: int): + self.size = size + self.buffer = [0] * size + self.head = 0 + self.count = 0 + # The denominator is the sum of weights: 1 + 2 + ... + size + # Formula: (n * (n + 1)) / 2 + self.denominator = (size * (size + 1)) / 2 + + def next(self, val: int) -> float: + # 1. Update the buffer + self.buffer[self.head] = val + self.head = (self.head + 1) % self.size + if self.count < self.size: + self.count += 1 + + # 2. Calculate Weighted Sum + weighted_sum = 0.0 + current_denominator = 0 + + # Iterate backward from the most recent element + for i in range(self.count): + # Find index of elements from newest to oldest + # (self.head - 1 - i) handles the circular wrap-around + idx = (self.head - 1 - i) % self.size + weight = self.size - i + weighted_sum += self.buffer[idx] * weight + current_denominator += weight + + return weighted_sum / current_denominator From 33a26e07f251776992908722871fc842259dd63f Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Sat, 27 Dec 2025 04:45:00 +0000 Subject: [PATCH 4/4] updating DIRECTORY.md --- DIRECTORY.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/DIRECTORY.md b/DIRECTORY.md index 54827666..c4be82d0 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -250,6 +250,10 @@ * [Test Non Overlapping Intervals](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/arrays/non_overlapping_intervals/test_non_overlapping_intervals.py) * Subarrays With Fixed Bounds * [Test Subarrays With Fixed Bounds](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/arrays/subarrays_with_fixed_bounds/test_subarrays_with_fixed_bounds.py) + * Circular Buffer + * [Circular Buffer](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/circular_buffer/circular_buffer.py) + * [Exceptions](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/circular_buffer/exceptions.py) + * [Test Circular Buffer](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/circular_buffer/test_circular_buffer.py) * Dicts * [Default Dicts](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/dicts/default_dicts.py) * [Ordered Dict](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/dicts/ordered_dict.py) @@ -326,7 +330,11 @@ * [Test Stacks](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/stacks/test_stacks.py) * Streams * Moving Average + * [Exponential Moving Average](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/streams/moving_average/exponential_moving_average.py) + * [Moving Average](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/streams/moving_average/moving_average.py) + * [Moving Average With Buffer](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/streams/moving_average/moving_average_with_buffer.py) * [Test Moving Average](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/streams/moving_average/test_moving_average.py) + * [Weighted Moving Average](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/streams/moving_average/weighted_moving_average.py) * Stream Checker * [Test Stream Checker](https://github.com/BrianLusina/PythonSnips/blob/master/datastructures/streams/stream_checker/test_stream_checker.py) * Timemap @@ -932,7 +940,6 @@ * Linked List * [Test Reorder List](https://github.com/BrianLusina/PythonSnips/blob/master/tests/datastructures/linked_list/test_reorder_list.py) * [Test Build One 2 3](https://github.com/BrianLusina/PythonSnips/blob/master/tests/datastructures/test_build_one_2_3.py) - * [Test Circular Buffer](https://github.com/BrianLusina/PythonSnips/blob/master/tests/datastructures/test_circular_buffer.py) * [Test Consecutive](https://github.com/BrianLusina/PythonSnips/blob/master/tests/datastructures/test_consecutive.py) * [Test Data Reverse](https://github.com/BrianLusina/PythonSnips/blob/master/tests/datastructures/test_data_reverse.py) * [Test Dominator](https://github.com/BrianLusina/PythonSnips/blob/master/tests/datastructures/test_dominator.py)