cdarlint
9/29/2018 - 8:59 AM

## combination of list a, for each n in b, get \$C_a^n\$

combination of list a, for each n in b, get \$C_a^n\$

``````import numpy as np
def combinations(arr,
c,
cut=[],
results=[]):
if 0 in c:
results+=[cut]
if np.all(c<=0):
return results
for i in range(len(arr)):
combinations(arr[i+1:],c-1,cut+[arr[i]],results)
return results
a=np.array([1,2,3,4,5,6,7,8])
b=np.array([2,3,4])
k=combinations(a,b,results=[])
print(k)
print()
a=np.array([1,2,3,4,5])
b=np.array([4,5])
k=combinations(a,b,results=[])
print(k)

# OUTPUT:
#
# [[1, 2], [1, 2, 3], [1, 2, 3, 4], [1, 2, 3, 5], [1, 2, 3, 6], [1, 2, 3, 7], [1, 2, 3, 8], [1, 2, 4], [1, 2, 4, 5], [1, 2, 4, 6], [1, 2, 4, 7], [1, 2, 4, 8], [1, 2, 5], [1, 2, 5, 6], [1, 2, 5, 7], [1, 2, 5, 8], [1, 2, 6], [1, 2, 6, 7], [1, 2, 6, 8], [1, 2, 7], [1, 2, 7, 8], [1, 2, 8], [1, 3], [1, 3, 4], [1, 3, 4, 5], [1, 3, 4, 6], [1, 3, 4, 7], [1, 3, 4, 8], [1, 3, 5], [1, 3, 5, 6], [1, 3, 5, 7], [1, 3, 5, 8], [1, 3, 6], [1, 3, 6, 7], [1, 3, 6, 8], [1, 3, 7], [1, 3, 7, 8], [1, 3, 8], [1, 4], [1, 4, 5], [1, 4, 5, 6], [1, 4, 5, 7], [1, 4, 5, 8], [1, 4, 6], [1, 4, 6, 7], [1, 4, 6, 8], [1, 4, 7], [1, 4, 7, 8], [1, 4, 8], [1, 5], [1, 5, 6], [1, 5, 6, 7], [1, 5, 6, 8], [1, 5, 7], [1, 5, 7, 8], [1, 5, 8], [1, 6], [1, 6, 7], [1, 6, 7, 8], [1, 6, 8], [1, 7], [1, 7, 8], [1, 8], [2, 3], [2, 3, 4], [2, 3, 4, 5], [2, 3, 4, 6], [2, 3, 4, 7], [2, 3, 4, 8], [2, 3, 5], [2, 3, 5, 6], [2, 3, 5, 7], [2, 3, 5, 8], [2, 3, 6], [2, 3, 6, 7], [2, 3, 6, 8], [2, 3, 7], [2, 3, 7, 8], [2, 3, 8], [2, 4], [2, 4, 5], [2, 4, 5, 6], [2, 4, 5, 7], [2, 4, 5, 8], [2, 4, 6], [2, 4, 6, 7], [2, 4, 6, 8], [2, 4, 7], [2, 4, 7, 8], [2, 4, 8], [2, 5], [2, 5, 6], [2, 5, 6, 7], [2, 5, 6, 8], [2, 5, 7], [2, 5, 7, 8], [2, 5, 8], [2, 6], [2, 6, 7], [2, 6, 7, 8], [2, 6, 8], [2, 7], [2, 7, 8], [2, 8], [3, 4], [3, 4, 5], [3, 4, 5, 6], [3, 4, 5, 7], [3, 4, 5, 8], [3, 4, 6], [3, 4, 6, 7], [3, 4, 6, 8], [3, 4, 7], [3, 4, 7, 8], [3, 4, 8], [3, 5], [3, 5, 6], [3, 5, 6, 7], [3, 5, 6, 8], [3, 5, 7], [3, 5, 7, 8], [3, 5, 8], [3, 6], [3, 6, 7], [3, 6, 7, 8], [3, 6, 8], [3, 7], [3, 7, 8], [3, 8], [4, 5], [4, 5, 6], [4, 5, 6, 7], [4, 5, 6, 8], [4, 5, 7], [4, 5, 7, 8], [4, 5, 8], [4, 6], [4, 6, 7], [4, 6, 7, 8], [4, 6, 8], [4, 7], [4, 7, 8], [4, 8], [5, 6], [5, 6, 7], [5, 6, 7, 8], [5, 6, 8], [5, 7], [5, 7, 8], [5, 8], [6, 7], [6, 7, 8], [6, 8], [7, 8]]
#
# [[1, 2, 3, 4], [1, 2, 3, 4, 5], [1, 2, 3, 5], [1, 2, 4, 5], [1, 3, 4, 5], [2, 3, 4, 5]]``````