aboutsummaryrefslogtreecommitdiff
path: root/utilities.py
diff options
context:
space:
mode:
Diffstat (limited to 'utilities.py')
-rw-r--r--utilities.py58
1 files changed, 0 insertions, 58 deletions
diff --git a/utilities.py b/utilities.py
deleted file mode 100644
index 7a9d55d..0000000
--- a/utilities.py
+++ /dev/null
@@ -1,58 +0,0 @@
-from os import getenv
-from time import time
-from typing import Tuple
-from random import shuffle
-from dataclasses import dataclass
-
-SECS_IN_MIN = 60
-
-
-def _shuffle_two_lists(a: list, b: list) -> Tuple[list, list]:
- indices = list(range(len(a)))
- shuffle(indices)
- a = [a[index] for index in indices]
- b = [b[index] for index in indices]
- return a, b
-
-
-def _pick_from_list_after_sorting_other(a: list, b: list[int]) -> list:
- indices = [i[0] for i in sorted(enumerate(b), key=lambda x: x[1])]
- return [a[index] for index in indices]
-
-
-def sample_list(indices: list, cost: list[int], count: int = None) -> list:
- if count is None:
- count = len(indices)
- indices, cost = _shuffle_two_lists(indices, cost)
- indices = _pick_from_list_after_sorting_other(indices, cost)[:count]
- return indices
-
-
-@dataclass
-class Timer:
- ref: float = None
- running: bool = False
- max_mins: float = float(getenv("TIMER"))
- default: str = ("00", "00")
-
- def __post_init__(self):
- self.max_seconds = self.max_mins * SECS_IN_MIN
-
- def start(self):
- self.ref = time() + self.max_seconds
- self.running = True
-
- def stop(self):
- self.ref = None
- self.running = False
-
- def get(self):
- if not self.running:
- return self.default
- total_seconds = self.ref - time()
- if total_seconds < 0:
- self.stop()
- return self.default
- mins = f"{int(total_seconds // SECS_IN_MIN):02d}"
- secs = f"{int(total_seconds % SECS_IN_MIN):02d}"
- return mins, secs