2017-07-28 58 views
2

斐波纳契是好的:帕斯卡在K /三角q

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 

回答

5

有一个在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 
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 
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代码中,这里是一个免费的λ-溶液:

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

和从 ':解决方案:((+':),[0] @) \ [; 1] - 从您的链接,帕斯卡的'发电机'(值1)也可以是一个参数 –