From dcd26cb0db4800b5852b1f12c8a9acfe879037a9 Mon Sep 17 00:00:00 2001 From: TheRealSaiTama Date: Wed, 11 Oct 2023 11:38:44 +0530 Subject: [PATCH] Fixes: fix the code to return tuple so we can add doctests in it and make cover higher in dynamic_programming/subset_generation.py --- dynamic_programming/subset_generation.py | 34 ++++++++++++------------ 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/dynamic_programming/subset_generation.py b/dynamic_programming/subset_generation.py index 819fd8106def..f9810e78d9e4 100644 --- a/dynamic_programming/subset_generation.py +++ b/dynamic_programming/subset_generation.py @@ -1,44 +1,44 @@ -# Print all subset combinations of n element in given set of r element. +# Return all subset combinations of n element in given set of r element. def combination_util(arr, n, r, index, data, i): """ - Current combination is ready to be printed, print it + Current combination is ready to be returned, return it arr[] ---> Input Array data[] ---> Temporary array to store current combination start & end ---> Staring and Ending indexes in arr[] index ---> Current index in data[] - r ---> Size of a combination to be printed + r ---> Size of a combination to be returned """ if index == r: - for j in range(r): - print(data[j], end=" ") - print(" ") - return + return tuple(data) # When no more elements are there to put in data[] if i >= n: - return + return None # current is included, put next at next location data[index] = arr[i] - combination_util(arr, n, r, index + 1, data, i + 1) + res1 = combination_util(arr, n, r, index + 1, data, i + 1) # current is excluded, replace it with # next (Note that i+1 is passed, but # index is not changed) - combination_util(arr, n, r, index, data, i + 1) - # The main function that prints all combinations - # of size r in arr[] of size n. This function - # mainly uses combinationUtil() + res2 = combination_util(arr, n, r, index, data, i + 1) + if res1 is None: + return res2 + elif res2 is None: + return res1 + else: + return res1, res2 -def print_combination(arr, n, r): +def get_combinations(arr, n, r): # A temporary array to store all combination one by one data = [0] * r - # Print all combination using temporary array 'data[]' - combination_util(arr, n, r, 0, data, 0) + # Return all combination using temporary array 'data[]' + return combination_util(arr, n, r, 0, data, 0) if __name__ == "__main__": # Driver code to check the function above arr = [10, 20, 30, 40, 50] - print_combination(arr, len(arr), 3) + print(get_combinations(arr, len(arr), 3)) # This code is contributed by Ambuj sahu