Skip to content

Instantly share code, notes, and snippets.

@roSievers
Created March 14, 2015 21:07
Show Gist options
  • Save roSievers/051dc9c7a736e3d959e7 to your computer and use it in GitHub Desktop.
Save roSievers/051dc9c7a736e3d959e7 to your computer and use it in GitHub Desktop.
#https://math.stackexchange.com/questions/1189554/number-of-pairs-formed-from-2n-people-sitting-in-a-circle#1189713
import math, operator
product = lambda l: reduce(operator.mul, l, 1)
def binom(n,k): # https://stackoverflow.com/questions/26560726/python-binomial-coefficient
if (k > n) or (k < 0):
return 0
return product(xrange(k+1, n+1)) // math.factorial(n-k)
def oddFactorial(n): # computes 1*3*5*...*2n-1
return product([2*k-1 for k in xrange(1,n+1)])
def Sam(n):
return sum([(-1)**k * binom(2*n-k, k) * oddFactorial(n-k) for k in xrange(n+1)])
def Andrew(n):
return sum([(-1)**k * (binom(2*n-k, k) + binom(2*n-k-1, k-1))*oddFactorial(n-k) for k in xrange(n+1)])
print [Sam(k) for k in xrange(2,10)]
print [Andrew(k) for k in xrange(2,10)]
print [Sam(k)- Sam(k-1) for k in xrange(2,10)]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment