Compare commits

..

3 Commits

Author SHA1 Message Date
Margaret
d053352d95
Updating cheduling/split_workload.py
implementing suggestion

Co-authored-by: Tianyi Zheng <tianyizheng02@gmail.com>
2023-07-26 17:16:36 +03:00
Margaret
7f73cbd3f7
Updating scheduling/split_workload.py
implementing suggestion

Co-authored-by: Tianyi Zheng <tianyizheng02@gmail.com>
2023-07-26 17:15:35 +03:00
Margaret
f12ae10b43
Updating scheduling/split_workload.py
implementing recommendations

Co-authored-by: Tianyi Zheng <tianyizheng02@gmail.com>
2023-07-26 17:07:39 +03:00

View File

@ -28,22 +28,20 @@ def split_list(timings: list) -> tuple:
def split_workload(arr: list) -> tuple:
if len(arr) == 0:
result = ([], [], 0)
elif len(arr) == 1:
result = ([arr[0]], [], 1)
return ([], [], 0)
if len(arr) == 1:
return ([arr[0]], [], 1)
else:
n = len(arr)
smallest_diff = float("inf")
all_nums_positive = [c >= 0 for c in arr]
if False in all_nums_positive:
raise ValueError("numbers can only be positive")
if any(c < 0 for c in arr):
raise ValueError("Numbers can only be non-negative")
for i in range(1, 2**n - 1):
indices = [j for j in range(n) if (i & (1 << j)) != 0]
distributed_timings_1 = [arr[j] for j in indices]
distributed_timings_2 = [arr[j] for j in range(n) if j not in indices]
diff = abs(sum(distributed_timings_1) - sum(distributed_timings_2))
if diff < smallest_diff:
smallest_diff = diff
smallest_diff = min(smallest_diff, diff)
result = (
distributed_timings_1,
distributed_timings_2,