Pascal's triangle: Difference between revisions

Content added Content deleted
Line 4,802: Line 4,802:
def finitePascalRows(n):
def finitePascalRows(n):
'''The first n rows of Pascal's triangle.'''
'''The first n rows of Pascal's triangle.'''
def go(a, _):
return nextPascal(a)

return accumulate(
return accumulate(
chain([[1]], range(1, n)),
chain(
go
[[1]], range(1, n)
),
lambda a, _: nextPascal(a)
)
)


Line 4,839: Line 4,838:
' '
' '
)(' '.join(map(str, ns)))
)(' '.join(map(str, ns)))

w = len(' '.join((map(str, ys[-1]))))
w = len(' '.join((map(str, ys[-1]))))
return '\n'.join(map(align(w), ys))
return '\n'.join(map(align(w), ys))
Line 4,853: Line 4,853:
q = qr[0]
q = qr[0]
return (q * c) + s + ((q + qr[1]) * c)
return (q * c) + s + ((q + qr[1]) * c)

return lambda c: lambda s: go(c, s)
return lambda c: lambda s: go(c, s)


Line 4,866: Line 4,867:
yield v
yield v
v = f(v)
v = f(v)

return go
return go