2017-10-02 8 views
2

この質問は私の解決の間に発生しましたthis problemDoの中の動詞の条件... While(^ :)

NB. Find the next number whose prime factorization exponents 
NB. match those of the given number. 

exps=. /:[email protected]{:@(__&q:) 
f=. 3 : 0 
    target=. exps y 
    (>:^:([email protected](target-:exps))^:_) y+1 
) 

f 20 NB. 28 

...ドのwhile条件を指定するために、私は最初の引数yのプライム指数を計算し、targetにその答えを保存していた一方であることに注意してください。私はその後、While条件として[email protected](target-:exps)を書くことができました。

これはもちろん、暗黙のスタイルを壊します。だから私は上記の動詞が達成するのと同じことを達成する方法があるかどうかを知りたいですが、単一の暗黙の動詞としてそうしていますか?私はこれに近づい

答えて

2

方法は不変の比較targetで、右の引数は、最初のインクリメントをした>: yで左引数がexps yである二項フォークの中心地としてfを考えることでした。次のステップは、expsモナディックを維持するために、をそれぞれ^:fに使用することでした。 [は、左の引数からexps yを取得します。暗黙

exps=. /:[email protected]{:@(__&q:) 
    ft=: exps >:@]^:([ [email protected]: [email protected]])^:_ >: 
    ft 20 
28 
+0

テリフィックで書かれ

は、ありがとうございました。何らかの理由で私は 'v'が左の引数にアクセスできなかったと仮定しました。あなたが示したように、明らかに真ではありません。 – Jonah