2016-07-24 33 views
1

我想弄清楚Q語言的基礎知識。我正在嘗試一個示例程序,讓我們說一個給定的數字,我可以找到3和5的所有倍數的總和?以Q語言循環訪問

如果輸入爲10和23

我試圖想在使用直到和求和項,但不能但無濟於事至今。

回答

0
q)sum where 0=min(til 10)mod/:3 5 
23 

步驟,我們只是運用我們的MOD超過5和3,而不是單獨做他們。

q)(til 10)mod 3 
0 1 2 0 1 2 0 1 2 0 
q)(til 10)mod 5 
0 1 2 3 4 0 1 2 3 4 
q)(til 10)mod/:3 5 
0 1 2 0 1 2 0 1 2 0 
0 1 2 3 4 0 1 2 3 4 
q) 

有了這個結果,我們有2個列表; ((直到10)mod 3;(直到10)mod 5)。如果我們去了每個這樣的索引3,我們會有(0; 3)。這意味着我們的數字可以被3整除而不是5。我們只關心它是否可以被整除,所以我們可以取最小值。

q)min(til 10)mod/:3 5 
0 1 2 0 1 0 0 1 2 0 
q) 

接下來我們簡單地找到mod爲0的索引;

q)where 0=min(til 10)mod/:3 5 
0 3 5 6 9 
q) 

而且,由於這些指標都是一樣的價值,因爲在這些指標的實際值,我們可以只總結他們。給予;

q)sum where 0=min(til 10)mod/:3 5 
23 
q) 

如果它是那麼這些索引的索引和值不等同那麼我們就需要索引到原來的列表和值相加的情況。

2
q)sum where (or/) 0=(til 10) mod/: 3 5 
23 
+0

你好瑞恩, 感謝您的答案。你能解釋你的代碼嗎? –

+0

特別我沒有得到(或/)和/:3 5。 –