在APL

2013-06-29 20 views
0

遞增基數在FinnAPL成語庫,19項被描述爲「升序基數(排名中,所有不同),」,代碼如下:在APL

⍋⍋X 

我還發現了一個(R. Peschi)的同一個圖書館的book review,他在其中說:「'升序基數(排名,所有不同)'我們中有多少人明白爲什麼對升級結果進行分級會產生這種影響?」這也是我的問題。我在互聯網上廣泛搜索,並提出了ZILCH。

回答

2

升序基數

速記起見,我會打電話給那個小的代碼片斷「等級。」事情變得很明顯,當你開始將其應用於二進制數什麼是秩發生。例如:

X←0 0 1 0 1 
⍋⍋X    ⍝ output is 1 2 4 3 5 

輸出指示排序後值的位置。您可以從輸出中看到,兩個1將在最後兩個時隙4和5中結束,並且0將結束於第1,2和3位。因此,它將向量的每個值分配等級。與此相比,檔次最高:

X←7 8 9 6 
⍋X    ⍝ output is 4 1 2 3 
⍋⍋X    ⍝ output is 2 3 4 1 

你可以把等級最高爲這一立場得到這個數字並且,你能想到的排名爲這個號碼獲取位置

7 8 9 6   ⍝ values of X 

4 1 2 3   ⍝ position 1 gets the number at 4 (6) 
       ⍝ position 2 gets the number at 1 (7) etc. 
2 3 4 1   ⍝ 1st number (7) gets the position 2 
       ⍝ 2nd number (8) gets the position 3 etc. 

有意思的是,升級和排名就像同一枚硬幣的兩面,你可以在兩者之間交替。換句話說,我們有以下身份:

​​

爲什麼?

到目前爲止,還沒有真正回答佩斯基先生爲什麼會產生這種效應的問題。如果按照鍵值對進行思考,答案就在於原始鍵是一組升序基數:1 2 3 4.應用升級後,將創建一個新矢量,其值爲原始值鍵重新排列,因爲它們會在排序後重新排列:4 1 2 3.第二次應用等級是關於將原始鍵重新恢復爲一系列遞增的基數。但是,這第三個向量的值並不是自己的基數。而是它們對應於第二個向量的鍵。

這是一種很難理解,因爲它是一個參考參考,但第三矢量值所引用的原單組數字的,因爲它們發生在原來的位置:

7 8 9 6 
2 3 4 1 

在這個例子中,2是從7的原始位置引用7。由於值2也對應於第二個向量的關鍵字,而第二個向量又是第二個位置,所以最後的消息是在排序之後,7將位於位置2中。8將位於3,9中的第4和6位在第一個位置。

排名和可共享

在FinnAPL成語圖書館,第二項被描述爲「升序基數(排名,可共享的)」,而代碼如下:

⌊.5×(⍋⍋X)+⌽⍋⍋⌽X 

這個代碼的輸出和它的兄弟一樣,只要輸入矢量的所有值不同,這個代碼的輸出就會升序排列(排名,所有不同)。然而,可共享版本不爲那些相等分配新值:

X←0 0 1 0 1 
⌊.5×(⍋⍋X)+⌽⍋⍋⌽X   ⍝ output is 2 2 4 2 4 

輸出的值通常應該被解釋爲相對,即,2S具有比4S相對較低的等級,所以他們將首先出現在數組中。