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]]