summaryrefslogtreecommitdiff
path: root/utilities.py
diff options
context:
space:
mode:
authorKaran Jayachandra <mail@karanjayachandra.com>2024-10-16 21:42:22 +0000
committerKaran Jayachandra <mail@karanjayachandra.com>2024-10-16 21:42:22 +0000
commit7643486d7122b322a052bfca8ec83326c48053d0 (patch)
tree096d2b629818f79674d22a14eff124f082449b6e /utilities.py
parent9ef7d95c7010351078a929f5144f5098d4142cd0 (diff)
parent36cc7d82a55cbd8167e1f52637dd1938497dd8cc (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.py23
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