feat: add random plane schedule in task 6

This commit is contained in:
2026-04-21 23:17:40 +06:00
parent edc0354519
commit 41727493ea

45
task6/main.py Normal file
View File

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