From 41727493ea18332e5c038394ba05f227ddaf6ca9 Mon Sep 17 00:00:00 2001 From: Andrey Golikov Date: Tue, 21 Apr 2026 23:17:40 +0600 Subject: [PATCH] feat: add random plane schedule in task 6 --- task6/main.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 task6/main.py diff --git a/task6/main.py b/task6/main.py new file mode 100644 index 0000000..2677550 --- /dev/null +++ b/task6/main.py @@ -0,0 +1,45 @@ +from collections import deque +from dataclasses import dataclass +from icecream import ic +from numpy import random +from typing import Final, Iterable + +from numpy.typing import NDArray + + +class Plane: + __id_increment = 0 + + def __init__(self) -> None: + self.id = self.__id_increment + Plane.__id_increment += 1 + +@dataclass +class Request: + time: float + plane: Plane + +def generate_timeline(incoming_planes_per_hour: float, outcoming_planes_per_hour: float, interval_minutes: int) -> Iterable[tuple[int, int]]: + def _generate(planes_per_hour: float) -> NDArray: + return random.poisson(planes_per_hour / 60, interval_minutes) + + incoming_planes_per_minute = _generate(incoming_planes_per_hour) + outcoming_planes_per_minute = _generate(outcoming_planes_per_hour) + return zip(incoming_planes_per_minute, outcoming_planes_per_minute) + +# takeoff_duration: Final[float] = 30 # minutes + +# max_queue: Final[int] = int(input()) +# interval: Final[float] = int(input()) # minutes +# incoming_planes, outcoming_planes = map(float, input().split()) # per hour + +# in_queue: deque[Plane] = deque(maxlen=max_queue) +# out_queue: deque[Plane] = deque(maxlen=max_queue) + +timeline = generate_timeline(5,2, 120) + +for i, (in_planes_count, out_planes_count) in enumerate(timeline): + for a in range(in_planes_count): + ic(f"{i} in: {Plane().id}") + for a in range(out_planes_count): + ic(f"{i} out: {Plane().id}")