So I'm trying to implement a function ptt(L:List[int],k:int)
that returns a nested list containing partitions of L where each element of the list is itself a list containing exactly k elements (except the last partition which may have fewer than k elements). For example, when L = [1,2,3,4,5,6,7]
and k = 2
, partition(L, k)
returns [[1,2],[3,4],[5,6],[7]]
. Here are a few more examples.
assert ptt([1,2,3],2) == [[1,2],[3]]
assert ptt([1,2,3],3) == [[1,2,3]]
assert ptt([1,2,3,4],1) == [[1],[2],[3],[4]]
assert ptt([1,2,3,4],2) == [[1,2],[3,4]]
Here is my attempt at the code...
def ptt(L, k):
if (L == 0 or k == 0 or k > L):
return 0
if (k == 1 or k == L):
return 1
return (k * ptt(L - 1, k) +
ptt(L - 1, k - 1))
However, this doesn't work at all... what changes to my code should I make to make sure it works??