2017-07-28 57 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)也可以是一個參數 –