How can the following function be simplified so that it has a time complexity of O(n) or faster? For your information, the specifications of the functions are as follows: Using numbers ranging from 0...


How can the following function be simplified so that it has a time complexity of O(n) or faster?


For your information, the specifications of the functions are as follows:


Using numbers ranging from 0 to 15 (inclusive), create all possible lists which sum up to K and have a length of N. Duplicated numbers are allowed as long as it fulfills the conditions above (this means [0,0,1], [0,1,0] and [1,0,0] are all correct outputs if K=1 and N=3). When instantiated with the list function, the list size of the function should be the number of all lists.


For example, given K=23 and N=2, the expected list size is 8. The function must be able to accept N=10 and be finished before 9 seconds. Do not use itertools or external libraries.


def permutations_w_constraints(n_perm_elements, sum_total):<br>if n_perm_elements<br>== 1:<br>if (sum_total <= 15) & (sum_total >= 0):<br>yield (sum_total,)<br>else:<br>for value in range(0, 16):<br>for permutation in permutations_w_constraints(<br>n_perm_elements - 1, sum_total - value):<br>yield (value,) + permutation<br>n = 10<br>k<br>8<br>%3D<br>new_list<br>list(permutations_w_constraints(n,k))<br>print(len(new_list))<br>

Extracted text: def permutations_w_constraints(n_perm_elements, sum_total): if n_perm_elements == 1: if (sum_total <= 15)="" &="" (sum_total="">= 0): yield (sum_total,) else: for value in range(0, 16): for permutation in permutations_w_constraints( n_perm_elements - 1, sum_total - value): yield (value,) + permutation n = 10 k 8 %3D new_list list(permutations_w_constraints(n,k)) print(len(new_list))

Jun 08, 2022
SOLUTION.PDF

Get Answer To This Question

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here