分数と小数

J言語では分数を扱えて便利ですが、分数は分数の不便さがあって、直感的には大きさがわかりません。
二分の三と三分の四はどちらが大きいかというと二分の三は1.5で三分の四は1.333なので二分の三の方が大きい。
J言語で分数をソートできるか実験してみました。

   2r1 3r2 4r3 3r4 2r5
2 3r2 4r3 3r4 2r5
   x:^:_1 (2r1 3r2 4r3 3r4 2r5)
2 1.5 1.33333 0.75 0.4
   /:~ x:^:_1 (2r1 3r2 4r3 3r4 2r5)
0.4 0.75 1.33333 1.5 2
   /:~ 2r1 3r2 4r3 3r4 2r5
2r5 3r4 4r3 3r2 2
   (/:{]) 2r1 3r2 4r3 3r4 2r5
2r5 3r4 4r3 3r2 2

分数のままで問題なくソートできました。
ソートに使った/:~(スラッシュコロンチルダ)という関数は/:(スラッシュコロン)で生成した並び替えのための数列を自分自身に作用させてソートされた結果を得るものです。
同じ大きさのものがあったらどうなるか? 実験。

   /:~ 2r1 3r2 4r3 3r4 2r5 3r2
2r5 3r4 4r3 3r2 3r2 2
   /: 2r1 3r2 4r3 3r4 2r5 3r2
4 3 2 1 5 0

同じ大きさでも出現順に順をつけるようですね。


以上