質問

私は、主にHaskellで、プロジェクトオイラーの問題の84を解決しました。私は今戻って、私のいくつかのいくつかで解決しようとしています すでに Haskellで解決され、学習の演習としてJ.

現在、私は解決しようとしています 問題56. 。それを強調させてください 私はすでに正しい答えが何であるかを知っています, 、私はすでにHaskellでそれを解決したので。それは非常に簡単で些細な問題です。 ここでは答えを出しません。

これがJの私の解決策です:

digits =: ("."0)@":"0
eachDigit =: adverb : 'u@:digits"0' NB. I use this so often I made it an adverb.
cartesian =: adverb : '((#~ #) u ($~ *:@#))'
>./ +/ eachDigit x: ^ cartesian >: i. 99

これにより、目的の結果よりも少ない数が生成されます。言い換えれば、それはどういうわけか間違っています。そこにいるJ-ersは理由を知っていますか?それは非常に単純で完全にブルートフォースなので、私は困惑しています。

役に立ちましたか?

解決

その理由は、あなたが拡張精度を適用しているからです(x:)ゲームの遅すぎる。拡張精度に切り替えますあなたが最初に行うこと(例: i. x: 99)そしてあなたはすべて設定されるべきです。

あなたに関するもう一つのメモ cartesian. 。あなたはJの組み込みを見たいかもしれません 「テーブル」副詞(/):

   ^/~ >: i.5
1  1   1   1    1
2  4   8  16   32
3  9  27  81  243
4 16  64 256 1024
5 25 125 625 3125

   , ^/~ >: i.3
1 1 1 2 4 8 3 9 27
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top