ではJ
、 のようなリストがあり、それを のようなボックス構造にし1 2 3
たい*:
2*
┌─┬─┐
│1│2│
│4│4│
│9│6│
└─┴─┘
あるいは
┌───┐
│1 2│
├───┤
│4 4│
├───┤
│9 6│
└───┘
これを行う方法?よろしくお願いします。
ではJ
、 のようなリストがあり、それを のようなボックス構造にし1 2 3
たい*:
2*
┌─┬─┐
│1│2│
│4│4│
│9│6│
└─┴─┘
あるいは
┌───┐
│1 2│
├───┤
│4 4│
├───┤
│9 6│
└───┘
これを行う方法?よろしくお願いします。
追加モードで動名詞を呼び出す必要があります ( :0
)。
a =: 1 2 3
*:`+: (`:0) a
1 4 9
2 4 6
箱入りが必要な場合は、;/
それらだけ:
;/*:`+: (`:0) a
┌─────┬─────┐
│1 4 9│2 4 6│
└─────┴─────┘
;/ |: *:`+: (`:0) a NB. different axis
┌───┬───┬───┐
│1 2│4 4│9 6│
└───┴───┴───┘
_3 <\6 1 $,*:`+: (`:0) a NB. yet another axis
┌─┬─┐
│1│2│
│4│4│
│9│6│
└─┴─┘
縦方向 (列方向) の出力が必要な場合は、最初にリストを縦方向 (列方向) の形式に変換する必要があります。
,.1 2 3
1
2
3
これで、好きなだけ計算を適用できます。各出力を別々のボックスに入れたい場合は、; を使用してそれらを連鎖させることができます。フォークで:
(*: ; 2&*) ,. 1 2 3
2 つの注意事項:
J では、すべてのデータが同じ型と形状である場合にボックスを使用することは珍しく、不要です。あなたの場合、両方の操作がスカラーと数値であるため、両方の動詞が 1x3 列の数値を生成します。2 つの不透明なボックスを生成するよりも、それらを組み合わせて,.
2x3 の数値表を生成する方が、より一般的で慣用的です。;
"Double" はすでに J のプリミティブであるため、 の代わりに2&*
、+:
(*: ; +:) ,. 1 2 3