我在
Ruby中尝试
Problem 6 in Project Euler(在我尝试学习语言的过程中),这是我在第一次迭代中提出的:
upto = 10 a = (1..upto).to_a.product((1..upto).to_a) #a.each{ |x| print "(#{x[0]},#{x[1]})\n"} puts a.inject(0) {|sum,x| sum + x[0]*x[1] if (x[0] != x[1])}
不幸的是,这会在Ruby 2.0上引发以下错误:
in
block in <main>': undefined method
+’ for nil:NilClass (NoMethodError)
更令人费解的是,当我删除if条件时没有遇到错误(这显然给了我错误的答案顺便说一句!)
upto = 10 a = (1..upto).to_a.product((1..upto).to_a) a.each{ |x| print "(#{x[0]},x| sum + x[0]*x[1]} #if (x[0] != x[1])}
上面给出了以下输出(在打印出a的元素之后):
3025
作为一个调试步骤,我甚至打印出’a’的内容,以确保没有零元素 – 结果很好.有人可以解释一下
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。