Add time complexity annotations to methods in world.py
All checks were successful
Build Simulation and Test / Run All Tests (push) Successful in 1m2s

This commit is contained in:
Sam 2025-06-25 01:31:21 -05:00
parent b775813cbd
commit b9027ab935

View File

@ -153,6 +153,8 @@ class World:
:param camera: The camera object for coordinate transformation. :param camera: The camera object for coordinate transformation.
:param screen: The Pygame screen surface. :param screen: The Pygame screen surface.
Time complexity: O(n), where n is the number of objects in the current buffer.
""" """
for obj_list in self.buffers[self.current_buffer].values(): for obj_list in self.buffers[self.current_buffer].values():
for obj in obj_list: for obj in obj_list:
@ -161,6 +163,9 @@ class World:
def tick_all(self) -> None: def tick_all(self) -> None:
""" """
Advances all objects in the world by one tick, updating their state and handling interactions. Advances all objects in the world by one tick, updating their state and handling interactions.
Time complexity: O(N + K) / O(N*M), where N is the number of objects in the current buffer,
K is the number of objects that can interact with each object, and M is number of objects in checked cells where C is the number of cells checked within the interaction radius.
""" """
next_buffer: int = 1 - self.current_buffer next_buffer: int = 1 - self.current_buffer
self.buffers[next_buffer].clear() self.buffers[next_buffer].clear()
@ -208,6 +213,8 @@ class World:
:param y: Y coordinate of the center. :param y: Y coordinate of the center.
:param radius: Search radius. :param radius: Search radius.
:return: List of objects within the radius. :return: List of objects within the radius.
Time complexity: O(C * M) / O(N), where C is the number of cells checked within the radius and M is the number of objects in those cells.
""" """
result: List[BaseEntity] = [] result: List[BaseEntity] = []
cell_x, cell_y = int(x // self.partition_size), int(y // self.partition_size) cell_x, cell_y = int(x // self.partition_size), int(y // self.partition_size)
@ -234,6 +241,8 @@ class World:
:param x2: Maximum X coordinate. :param x2: Maximum X coordinate.
:param y2: Maximum Y coordinate. :param y2: Maximum Y coordinate.
:return: List of objects within the rectangle. :return: List of objects within the rectangle.
Time complexity: O(C * M) / O(N), where C is the number of cells checked within the rectangle and M is the number of objects in those cells.
""" """
result: List[BaseEntity] = [] result: List[BaseEntity] = []
cell_x1, cell_y1 = ( cell_x1, cell_y1 = (