k/q 中的帕斯卡三角形

Pascal's triangle in k/q

斐波那契很好:

  f:|+\
5 f 1

但我还没有找到帕斯卡三角的类似表达式。这是我能得到的最好的:

q){x+\x#1}6
1 1 1  1  1   1  
1 2 3  4  5   6  
1 3 6  10 15  21 
1 4 10 20 35  56 
1 5 15 35 70  126
1 6 21 56 126 252
1 7 28 84 210 462

这是一个基于 code.kx http://code.kx.com/q/ref/adverbs/

上的斐波那契示例的解决方案
q)pascal:{{((+':)x),1}/[x;1]}
q)pascal 0
1
q)pascal 6
1 6 15 20 15 6 1

q){{((+':)x),1}\[x;1]}  7
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

q idioms page

上有一个非常漂亮的
q)pt:{0+':x,0}
q)4 pt\ 1
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

original Pascal triangle确实比现代教科书版本旋转了45°,所以OP的解决方案是正确的,但可以提高可读性:

q)sums\[6;6#1]
1 1 1  1  1   1
1 2 3  4  5   6
1 3 6  10 15  21
1 4 10 20 35  56
1 5 15 35 70  126
1 6 21 56 126 252
1 7 28 84 210 462

对于那些喜欢破译混淆的 q 代码的人来说,这里有一个无 lambda 的解决方案:

q)p:(sums\).(-1+;#[;1])@\:
q)p 3
1 1 1
1 2 3
1 3 6