pascals triangle in codeeval 杨辉三角的生成

来自 codeeval 的题目 PASCALS TRIANGLE

要求给出 n 生成 n 行的杨辉三角形数组

思路

  • 第一行初始化给定
  • 从第二行开始有固定的规律
  • 第一位和最后一位是固定的 1
  • 中间的数值个数是上一行的数值个数 - 1
  • 中间的数值可以用 ns[1:] + ns[:-1] 而成

那写出来就是这样的

# 根据上一行 计算下一行的数值
def next_triangle_line(ns):
    return [1] + [i + j for i, j in zip(ns[1:], ns[:-1])] + [1]


# 生成整个三角形数组
def pascals_triangle(n):
    arrs = [[1]]
    for i in range(1, n):
        arrs.append(next_triangle_line(arrs[-1]))
    return arrs

待优化

Published: January 30 2015

blog comments powered by Disqus