>>  <<  Ndx  Usr  Pri  Phr  Dic  Rel  Voc  !:  wd  Help  Phrases

Grading

Grading is the assignment of an ordinal number to each item of an array, with all numbers distinct, and with the earliest of equal values being assigned a lower ordinal number. Grading can be used to produce the permutation that will put an array in order. Since sorting is a primitive operation in J, grading is more commonly used to put a companion array into an order derived from another array. For example, a table of addresses may be put into an order derived from a table of last names.

m0=: /: Grade y up
m1=: \: Grade y down
d2=: /:@i. Grade y up according to key x
d3=: \:@i. Grade y down according to key x
   y=:'leap','note',:'file'
   (] ; m0 ; (m0 { ]) ; m1 ; (m1 { ])) y
+--------------------------+
�leap�2 0 1�file�1 0 2�note�
�note�     �leap�     �leap�
�file�     �note�     �file�
+--------------------------+

   x=: ' abcdefghijklmnopqrstuvwxyz' [ y=: 'senator' 
   x (d2 ; (d2{]) ; d3 ; (d3{])) y
+-------------------------------------------+
�3 1 2 5 6 0 4�aenorst�4 0 6 5 2 1 3�tsronea�
+-------------------------------------------+

>>  <<  Ndx  Usr  Pri  Phr  Dic  Rel  Voc  !:  wd  Help  Phrases