3

Project Euler の問題のうち 84 を解決しましたが、ほとんどは Haskell でした。J. _ _

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

Jでの私の解決策は次のとおりです。

数字 =: ("."0)@":"0
eachDigit =: adverb : 'u@:digits"0' 注: 私はこれをよく使うので副詞にしました。
デカルト =: 副詞 : '((#~ #) u ($~ *:@#))'
>./ +/ eachDigit x: ^ デカルト >: i. 99

これにより、目的の結果よりも少ない数値が生成されます。つまり、どこか間違っている。そこにいるJ-ersは理由を知っていますか? それは非常に簡単で、完全に力ずくなので、私は困惑しています。

4

1 に答える 1

3

その理由は、拡張精度 ( x:) をゲームの後半に適用しているためです。最初に実行すること (例: i. x: 99) で拡張精度に切り替えれば、すべて設定されているはずです。

について、もう 1 つ注意してくださいcartesianJ の組み込みの「テーブル」副詞 ( /)を見たいと思うかもしれません:

   ^/~ >: 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
于 2010-06-16T22:09:10.633 に答える