Take the 2-minute tour ×
Code Review Stack Exchange is a question and answer site for peer programmer code reviews. It's 100% free, no registration required.

I saw a posting on Hacker News this morning that was ranting about people not being able to solve an interview question. I thought I would give it a shot, but I would like to know how my attempt could be improved.

def get_pascal_row(n):
    """
    Returns the nth row of Pascal's Triangle for a given n. Uses
    Gray's algorithm.
    """
    if n == 0: return []
    n -= 1
    row = [1]
    for i in xrange(1,n+1):
        row.append(row[-1] * n/i)
        n -= 1
    return row
share|improve this question

migrated from stackoverflow.com Jan 24 '13 at 3:11

This question came from our site for professional and enthusiast programmers.

1  
one word: memoize –  wim Jan 24 '13 at 1:39
    
Stop half way through and stick a copy of the first half reversed to the end of your return. –  Jaime Jan 24 '13 at 1:45
add comment

1 Answer 1

You can memoize the rows you have already computed previously.

Alternatively, you could compute it in closed form using the binomial coefficients:

enter image description here

Start looking in scipy.special.binom.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.