diff options
| author | Karan Jayachandra <mail@karanjayachandra.com> | 2024-10-16 21:42:22 +0000 |
|---|---|---|
| committer | Karan Jayachandra <mail@karanjayachandra.com> | 2024-10-16 21:42:22 +0000 |
| commit | 7643486d7122b322a052bfca8ec83326c48053d0 (patch) | |
| tree | 096d2b629818f79674d22a14eff124f082449b6e /utilities.py | |
| parent | 9ef7d95c7010351078a929f5144f5098d4142cd0 (diff) | |
| parent | 36cc7d82a55cbd8167e1f52637dd1938497dd8cc (diff) | |
Merge branch 'develop' into 'main'
Full functionality available
See merge request KaranJayachandra/match_up!3
Diffstat (limited to 'utilities.py')
| -rw-r--r-- | utilities.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/utilities.py b/utilities.py new file mode 100644 index 0000000..1ad24b8 --- /dev/null +++ b/utilities.py @@ -0,0 +1,23 @@ +from typing import Tuple +from random import shuffle + + +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 |
