【每日一题20220926】帕斯卡对角线

创建一个函数,返回一个数组,其中包含Pascal三角形n个对角线的第一个到第l个数字。

n = 0应该生成三角形的第一个对角线。
每个对角线中的第一个数字应该是1。
如果l = 0,则返回一个空数组。
在所有测试用例中,nl都是非负整数。

Pascal三角形(杨辉三角):

             1
          1     1
        1    2    1
      1   3    3     1
    1   4    6    4    1
  1   5    10   10   5   1
1  6   15    20  15    6   1

第1条对角线: 1 1 1 1 1 ...
第2条对角线: 1 2 3 4 5 ...
第3条对角线: 1 3 6 10 15 ...
第4条对角线: 1 4 10 20 35 ...

题目难度:一般
题目来源: Pascal’s Diagonals | Codewars

def generate_diagonal(n: int, l: int) -> list:
    # your code here

assert generate_diagonal(2, 5) == [1, 3, 6, 10, 15]
assert generate_diagonal(1, 10) == [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
assert generate_diagonal(3, 7) == [1, 4, 10, 20, 35, 56, 84]
def generate_diagonal(n: int, l: int) -> list:
    list_l = [1]*l
    for i in range(n):
        sum = 1
        for j in range(1,l):
            sum += list_l[j]
            list_l[j] = sum
    return list_l

assert generate_diagonal(2, 5) == [1, 3, 6, 10, 15]
assert generate_diagonal(1, 10) == [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
assert generate_diagonal(3, 7) == [1, 4, 10, 20, 35, 56, 84]
def generate_diagonal(n: int, l: int) -> list:
    list_l=[1]*l
    for i in range(1,n+1):
        s=1
        for j in range(1,l):
            s+=list_l[j]
            list_l[j]=s
    return list_l

assert generate_diagonal(2, 5) == [1, 3, 6, 10, 15]
assert generate_diagonal(1, 10) == [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
assert generate_diagonal(3, 7) == [1, 4, 10, 20, 35, 56, 84]