3

Jで副詞や接続詞をいじっていて、奇妙な問題に遭遇しました。persistence数のデジタル積またはデジタル合計を計算するときに生成される数の進行を表示するために使用できると呼ばれる単純な副詞を定義しました。

S =: 1 : 'u/@:("."0)@":^:a:"0'

+ S 234私たちに与え234 9ます。次に、これを使用して、数の持続性を計算する別の副詞を作成しました。

P =: 1 : '<:@#@(u S)"0'

+ P 234私たちに与え1ます。ここで、2の加法持続性を持つ30未満のすべての数値を検索しS、各数値に対して生成されたリストを表示するとします。

+ S I. 2 = + P i.30

これにより、次のリストが生成されます。

19 10 1
28 10 1
29 11 2

ここまでは順調ですね。さて、これを接続詞に変えたいと思いました。その左側には永続化に使用する動詞が含まれ、右側にはリストを制限するために使用される数が含まれています。(2上記の例では。)その接続詞の私の定義は次のとおりです。

Q =: 2 : 'u S I. n = u P'

Jコンソールに式を入力すると+ Q 2、次のようになります。

+/@:("."0)@":^:a:"0 I. 2 = <:@#@(+/@:("."0)@":^:a:"0)"0

これは正確に正しいので、などの引数を使用して完全な式を実行すると、正常にi.30機能します。

+/@:("."0)@":^:a:"0 I. 2 = <:@#@(+/@:("."0)@":^:a:"0)"0 i.30

ただし、式+ Q 2 i.30をJコンソールに入力すると、「長さエラー」が返されます。なぜ?!+ Q 2正確に同等ではありません+/@:("."0)@":^:a:"0 I. 2 = <:@#@(+/@:("."0)@":^:a:"0)"0か?

私は完全に困惑しています。私は何が欠けていますか?接続詞の定義の内側と外側の両方でランクを試してみました。わからない。

4

1 に答える 1

3

+ Q 2指定した式とまったく同じですが、式で使用すると、かっこで囲まれているようになります。

   +/@:("."0)@":^:a:"0 I. 2 = <:@#@(+/@:("."0)@":^:a:"0)"0 i.30
19 10 1
28 10 1
29 11 2
   (+/@:("."0)@":^:a:"0 I. 2 = <:@#@(+/@:("."0)@":^:a:"0)"0) i.30
|length error

一般的にf g h y!= (f g h) y。後者では列車f g hを定義します。例えば:

   avg=: +/ % #
   +/ % # 1 2 3
0.333333
   (+/ % #) 1 2 3
2
   avg 1 2 3
2

次のようにyへの参照を追加することで、接続詞を修正できます。

   Q=: 2 : 'u S I. n = u P y'
   + Q 2 i.30
19 10 1
28 10 1
29 11 2
于 2011-08-14T03:54:56.423 に答える