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

6C. 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|
+-------------+-------+-------------+-------+


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