高尔夫球代码:生成帕斯卡三角形

发布于 2021-01-31 15:57:55

生成一个列表列表(或打印,我不介意),以最小的代码行显示N大小的Pascal三角形

这是我的尝试(使用技巧 python 2.6中的
118个字符):

c,z,k=locals,[0],'_[1]'
p=lambda n:[len(c()[k])and map(sum,zip(z+c()[k][-1],c()[k][-1]+z))or[1]for _ in range(n)]

说明:

  • 列表理解的第一个元素(当长度为0时)是 [1]
  • 接下来的元素是通过以下方式获得的:
  • 取上一个列表,然后创建两个列表,一个列表的开头以0填充,另一个列表的末尾填充。
    • 例如,对于第2步,我们采取[1]和化妆[0,1][1,0]
  • 将两个新列表元素相加
    • 例如,我们创建一个新列表[(0,1),(1,0)]并使用总和进行映射。
  • 重复n次,仅此而已。

用法(打印漂亮,实际上超出了代码高尔夫xD的范围):

result = p(10)
lines = [" ".join(map(str, x)) for x in result]
for i in lines:
    print i.center(max(map(len, lines)))

输出:

             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 7 21 35 35 21 7 1    
   1 8 28 56 70 56 28 8 1  
1 9 36 84 126 126 84 36 9 1
关注者
0
被浏览
58
1 个回答
  • 面试哥
    面试哥 2021-01-31
    为面试而生,有面试问题,就找面试哥。

    J ,APL系列的另一种语言,9个字符:

    p=:!/~@i.
    

    它使用J的内置“组合”动词。

    输出:

       p 10
    1 1 1 1 1  1  1  1  1   1
    0 1 2 3 4  5  6  7  8   9
    0 0 1 3 6 10 15 21 28  36
    0 0 0 1 4 10 20 35 56  84
    0 0 0 0 1  5 15 35 70 126
    0 0 0 0 0  1  6 21 56 126
    0 0 0 0 0  0  1  7 28  84
    0 0 0 0 0  0  0  1  8  36
    0 0 0 0 0  0  0  0  1   9
    0 0 0 0 0  0  0  0  0   1
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看