Files
algorithms-26/task6/main.py

46 lines
1.4 KiB
Python

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