3

斐波那契很好:

  f:|+\
5 f\1 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
4

3 回答 3

6

在q idioms 页面上有一个非常漂亮的

q)pt:{0+':x,0}
q)4 pt\ 1
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
于 2017-07-28T12:31:32.043 回答
2

与现代教科书版本相比,原始的帕斯卡三角形确实旋转了 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
于 2017-07-29T00:55:33.213 回答
1

这是基于 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
于 2017-07-28T11:34:52.177 回答