Combinations
def combinations(arr, r):
for i in range(len(arr)):
if r == 1:
yield [arr[i]]
else:
for next in combinations(arr[i+1:], r-1):
yield [arr[i]] + next
for _ in combinations([1,2,3,4,5], 2):
print(_)
Permutations
def permutations(arr, r):
for i in range(len(arr)):
if r == 1:
yield [arr[i]]
else:
for next in permutations(arr[:i] + arr[i+1:], r-1):
yield [arr[i]] + next
for _ in permutations([1,2,3,4,5], 2):
print(_)
Combinations_with_replacement
def combinations_with_replacement(arr, r):
for i in range(len(arr)):
if r == 1:
yield [arr[i]]
else:
for next in combinations_with_replacement(arr[i:], r-1):
yield [arr[i]] + next
for _ in combinations_with_replacement([1,2,3,4,5], 2):
print(_)
Product
def product(arr, r):
for i in range(len(arr)):
if r == 1:
yield [arr[i]]
else:
for next in product(arr, r-1):
yield [arr[i]] + next
for _ in product([1,2,3,4,5], 2):
print(_)