つまりn個からr個取り出す組み合わせというやつ。
これをPythonで書きたい。
そんなときは高階関数reduce
を使う。
import operator as op def ncr(n,r): r = min(n-r,r) if r == 0: return 1 num_over = reduce(op.mul, xrange(n, n - r, -1)) num_under = reduce(op.mul, xrange(1,r + 1)) return num_over // num_under
lambda式でも書くなら、、
reduce(lambda x, y: x * y, xrange(n, n - r, -1))
みたいに書く。