JのEuler 56の正解が得られないのはなぜですか?
-
27-09-2019 - |
質問
私は、主に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
所属していません StackOverflow