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