Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于在Ruby中的块中使用块的错误-数组can';不能强制为Fixnum(TypeError)_Ruby_Arrays_Type Coercion_Fixnum - Fatal编程技术网

关于在Ruby中的块中使用块的错误-数组can';不能强制为Fixnum(TypeError)

关于在Ruby中的块中使用块的错误-数组can';不能强制为Fixnum(TypeError),ruby,arrays,type-coercion,fixnum,Ruby,Arrays,Type Coercion,Fixnum,这是关于Euler项目的问题#1。当我在irb中逐行运行此代码时,我得到了预期的答案,但当我从.rb文件运行它时,它抛出错误“Array不能强制为Fixnum(TypeError)” 代码: #定义从“n”到0的整数列表 def Zi(a,b) 懒惰的;懒惰的 结束 #方程numberofoccurrences(最小倍数+最大倍数)/2给出了给定范围内所有倍数的总和 #因此,下面是multipleCounts[i](multiples[i]+lastMultiples[i])/2=>multip

这是关于Euler项目的问题#1。当我在irb中逐行运行此代码时,我得到了预期的答案,但当我从.rb文件运行它时,它抛出错误“Array不能强制为Fixnum(TypeError)”

代码:

#定义从“n”到0的整数列表
def Zi(a,b)
懒惰的;懒惰的
结束
#方程numberofoccurrences(最小倍数+最大倍数)/2给出了给定范围内所有倍数的总和
#因此,下面是multipleCounts[i](multiples[i]+lastMultiples[i])/2=>multipleCounts[i](lastAndFirstMultipleSums[i])/2
#给出指定范围内给定数字的任意倍数和(以倍数为单位)。
def查找每个倍数的总和(从,到,*倍数)
myReverseArr=Zi到,从
lastMultiples=multiples.map{| m | myreversearl.find{| i | i%m==0}
multipleCounts=lastMultiples.zip(multiples.map{| ms | ms.reduce(:/)}
lastAndFirstMultipleSums=lastMultiples.zip(multiples.map{| ms | ms.reduce(:+)}
sumsOfEachMultiple=lastAndFirstMultipleSums.zip(multipleCounts).map{xs | xs.reduce(:*)}.map{x | x/2}
结束
def find_sum_的倍数(从,到,*倍数)
sumsOfEachMultiple=为每个倍数(从、到、倍数)查找总和
公共倍数=[]
(0..(倍数长度-1))。每个do | i|
((i+1)…(乘以长度-1))。每个do | j|
commonMultiples ruby euler1.rb
euler1.rb:11:在“%”中:无法将数组强制为Fixnum(TypeError)
来自euler1.rb:11:in `为每一个(多个)查找(2个级别)和(sum)中的"块(2个级别)"
从euler1.rb:11:in'downto'
来自euler1.rb:11:in‘each’
来自euler1.rb:11:in‘each’
来自euler1.rb:11:in'find'
来自euler1.rb:11:in`block in find_sum_for_each_multiple'
来自euler1.rb:11:in'map'
来自euler1.rb:11:in“查找每个倍数的总和”
来自euler1.rb:18:in“查找倍数之和”
来自euler1.rb:32:in`'

我在一台核心i7 Windows 7 64位机器上运行,Ruby版本为2.0.0p0(2013-02-24)[x64-mingw32]

commonMultiples
已经是一个
数组
,在
为每个数组找到和
中,它被转换为
数组的
数组

换行

sumsOfCommonMultiples = find_sum_for_each_multiple(from, to, commonMultiples)


commonMultiples
已经是一个
数组
,在
find\u sum\u for\u each\u multiples
中,它被转换为
数组的
数组

换行

sumsOfCommonMultiples = find_sum_for_each_multiple(from, to, commonMultiples)


不管是谁投票否决了我,介意解释一下我为什么被否决吗?这对我来说似乎是个合理的问题。。。如果我可以在解释器中逐行执行相同的代码,并且没有错误,但是在从脚本运行代码时出现错误,这至少对我来说意味着我的逻辑是正确的,但是我缺少关于语言实现的某些特定内容。我在谷歌上搜索了一下,但我没有找到多少我认为与这个错误有关的东西。这可能是口译员的缺陷吗?不管是谁否决了我,介意解释一下我为什么被否决吗?这对我来说似乎是个合理的问题。。。如果我可以在解释器中逐行执行相同的代码,并且没有错误,但是在从脚本运行代码时出现错误,这至少对我来说意味着我的逻辑是正确的,但是我缺少关于语言实现的某些特定内容。我在谷歌上搜索了一下,但我没有找到多少我认为与这个错误有关的东西。这可能是翻译的缺陷吗?啊!所以我缺少的只是一点Ruby语法。谢谢这对我有用!我还想补充一点,我知道这还不是一个完整的解决方案-如果你用3个或更多的倍数尝试这个方法,它会崩溃,因为公共倍数的总和计算还没有找到所有的公共倍数重复。要做到这一点,我相信我必须编辑代码,不仅要计算所有对的公共倍数(2s)之和,还要计算三个三元组(3s)之和,等等,其中n是倍数的数目。我仍然在思考这个问题。我没有试图理解这个代码背后的逻辑。无论如何,祝你在这个问题上好运。:)啊!所以我缺少的只是一点Ruby语法。谢谢这对我有用!我还想补充一点,我知道这还不是一个完整的解决方案-如果你用3个或更多的倍数尝试这个方法,它会崩溃,因为公共倍数的总和计算还没有找到所有的公共倍数重复。要做到这一点,我相信我必须编辑代码,不仅要计算所有对的公共倍数(2s)之和,还要计算三个三元组(3s)之和,等等,其中n是倍数的数目。我仍然在思考这个问题。我没有试图理解这个代码背后的逻辑。无论如何,祝你在这个问题上好运。:)
sumsOfCommonMultiples = find_sum_for_each_multiple(from, to, commonMultiples)
sumsOfCommonMultiples = find_sum_for_each_multiple(from, to, *commonMultiples)