Skip to content

Instantly share code, notes, and snippets.

@cdarlint
Created September 29, 2018 08:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cdarlint/6f530ebedd2b74c9d6212e71a54a01be to your computer and use it in GitHub Desktop.
Save cdarlint/6f530ebedd2b74c9d6212e71a54a01be to your computer and use it in GitHub Desktop.
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]]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment