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}")