【发布时间】:2017-08-18 18:41:22
【问题描述】:
我正在尝试将 Integer 类的几个参数传递给两个方法之一 - 选择由传递给初始方法的最终参数确定。
这个问题在here里有完整的描述,但简而言之,我的方法应该能正确的算数。当以 :problem => :count_clumps 的最终参数传入多个数字时,包含 2 个以上相同数字的链。
即problem_14(1, 2, 2, 2, 2, 3, 4, 4, :problem => :count_clumps) 应该返回 2,因为它包含 2 个 2+ 相同数字的链。
我在以下方面未通过 rspec 测试:
problem_14(1, 2, 2, 3, 4, 4, :problem => :count_clumps)
我的方法应该返回2,但它们返回0。
我认为问题在于 problem_14 传递给 count_clumps 的任何内容。 count_clumps直接测试通过rspec测试,通过problem_14调用返回错误结果。
def problem_14(*parameters)
if parameters[-1].is_a?(Hash)
parameters.pop[:problem] == :same_ends ? same_ends(parameters) : count_clumps(parameters)
else
count_clumps(parameters)
end
end
def same_ends(n, *array)
return true if n == 0
array[0..n-1] == array[-n..-1]
end
def count_clumps(*array)
count = 0
clump = false
array.each_index do |x|
if array[x] == array[x+1]
clump = true
else
count += 1 if clump
clump = false
end
end
return count
end
如果有任何关于我在哪里出错的指示,我将不胜感激。
【问题讨论】: