题
我已经解决的项目欧拉问题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