combination([0,1,2,3], 2) = ([0], combination([1, 2, 3], 1)) + ([1], combination([2, 3], 1)) + ([2], combination([3], 1)))
def combinations(arr, n):
result = []
if n == 0:
return [[]]
for i in range(len(arr)):
elem = arr[i]
for rest in combination(arr[i + 1:], n - 1):
result.append([elem] + rest)
return result
print(combinations([0,1,2,3], 2))
# [[0, 1], [0, 2], [0, 3], [1, 2], [1, 3], [2, 3]]
permutation([0,1,2,3], 2) = ([0], permutation([1, 2, 3], 1)) + ([1], permutation([0, 2, 3], 1)) + ([2], permutation([0, 1, 3], 1)) + ([3], permutation([0, 1, 2], 1))
def permutations(arr, n):
result = []
if n == 0:
return [[]]
for i in range(len(arr)):
elem = arr[i]
for rest in permutations(arr[:i] + arr[i + 1:], n - 1):
result.append([elem] + rest)
return result
print(combination([0,1,2,3], 2))
# [[0, 1], [0, 2], [0, 3], [1, 2], [1, 3], [2, 3]]