ActiveState Code

Recipe 392153: Pascal`s triangle


this script prints a few lines of Pascal`s triangle ;-)

Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
def pascal(n):
    """Prints n first lines of Pascal`s triangle

    author: DR#m <dnpsite.narod.ru>
    last rev 20.03.05"""
    l=[1]
    p=[]
    for i in xrange(n):
        l2=[1]
        for j in xrange(len(l)-1):
            l2.append(l[j]+l[j+1])
        l2.append(1)
        print l
        l=l2
if __name__=="__main__":
    pascal(20)

Discussion

anyone going beat this? thak you

Comments

  1. 1. At 6:17 a.m. on 22 mar 2005, Markus Weihs said:

    This one's a little shorter :-) (but less readable :-/)

    def pascal(n):
        l = [[1]]
        for i in xrange(n-1):
            l.append([1,1])
            for j in xrange(len(l[-2])-1):
                l[-1].insert(-1,l[-2][j]+l[-2][j+1])
        return l
    
    if __name__ == '__main__':
        for i in mypascal(20): print i
    
  2. 2. At 7:11 a.m. on 22 mar 2005, Markus Weihs said:

    In my example above it should be

    if __name__ == '__main__':
        for i in pascal(20): print i
    
  3. 3. At 10:39 a.m. on 22 mar 2005, kdsfjkj klfjdsfj said:

    Shorter? Take this. def pascal2(n, t=[1], z=[[1]]): for i in xrange(1, n): z+=[[1]+[z[i-1][j]+z[i-1][j+1] for j in range(len(z[i-1])-1)]+[1]] print z

  4. 4. At 11:56 a.m. on 22 mar 2005, Scott David Daniels said:

    Row by Row. This highlights how the calculation is done.

    def nextrow(lst):
        lag = 0
        for element in lst:
            yield lag + element
            lag = element
        yield element
    
    row = [1]
    for number in range(12):
        row = nextrow(row)
        print row
    
  5. 5. At 9:44 a.m. on 25 mar 2005, Pood Dov said:

    Another try. def pas(n=10): line=[1] for i in range(0,n): print line line=[0]+line for j in range(len(line)-1): line[j]+=line[j+1]

Sign in to comment