私は、3つの数字の列を入力するだけの機能を記述する必要があります。数字の列を出力します。したがって、各行で計算して最終的に1つの行番号を得ることができます。たとえば、X = 1 2 3、Y = 2 3 4、Z = 0 1 2、calculate(xz)/(yz)なので、出力は0.5 0.5 0.5Jの3つの列の関数を書く方法は?
2
A
答えて
2
あなたは数学の表記がJに変換する場合、それはあなたは、数字の代わりに、行の列を望んでいたので、私たちはただの列に行を変更しますもう一度読んで(もむしろ=
より割り当てとして=:
を使用)
X=: 1 2 3
Y=: 2 3 4
Z=: 0 1 2
(X-Z)%(Y-Z) NB. doesn't need second parenthesis pair (X-Z)%Y-Z also works
0.5 0.5 0.5
を解決することができますモナドー,.
「ラヴェルアイテム」を使用して各アイテムを取り出し、それを1行にします。この場合、各項目はアトムであり、行は列になり、結果は列になります。
ex=: ,.X
why=: ,. Y
zed=: ,. Z
ex
1
2
3
why
2
3
4
zed
0
1
2
(ex-zed)%why-zed
0.5
0.5
0.5
0
これはyour other questionに関連している場合は、任意の形状を渡す引数をボックスまたは図形ことができます。
f =: 3 : 0
'x y z' =. y
(x-z)%(y-z)
)
f 1 2 3
2
f (1 2 3);(2 3 4);(0 1 2)
0.5 0.5 0.5
f (2 3 $ 5 4);(2 3$ 6 4 2);(2 3$ 7 5)
2 1 0.4
_1 0.666667 0.333333
f i.3 2 4 3 NB. Input shape (3 a b c...), output shape a b c...
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2