我一直在学习Ruby,我正在尝试一个问题,它将一个数字数组作为输入,将数组中偶数位置的整数平方,然后求平方整数+数组中奇数位置的整数。 (1,2,3,4,5应返回29)。我让它运行,然而,我在传递数字作为参数时遇到了麻烦。每当我尝试定义方法并在调用方法时传入数组时,我都会收到错误。
基本上,我希望方法为:
def alternate_sq_sum([])
以及通过调用方法传递任何数字数组的能力。
Ex. alternate_sq_sum([1,4,63,2,1]).
这是我目前的代码:
arr = [1,2,3,4,5]
even = arr.select.each_with_index { |str,i| i.even? }
odd = arr.select.each_with_index {|str,i| i.odd? }
even_sum = 0
even.map do |n|
even_sum +=n
end
odd_sum = 0
odd.map do |n|
n*=n
odd_sum+=n
end
print even_sum + odd_sum
答案 0 :(得分:1)
我只想感谢大家的回复并发布有效的代码。看来我的[]里面有参数,并且错过了一个导致它失败的结局。
def alternate_sq_sum(a)
even = a.select.each_with_index { |str,i| i.even? }
odd = a.select.each_with_index {|str,i| i.odd? }
even_sum = 0
even.map do |n|
even_sum +=n
end
odd_sum = 0
odd.map do |n|
n*=n
odd_sum+=n
end
total = even_sum + odd_sum
total
end
alternate_sq_sum([1,2,3,4,5])
答案 1 :(得分:0)
有一件事仍然不清楚:我们必须在偶数位置取整数的平方但你得到几率的赔率,这个代码有效!但是如果int是偶数,方法甚至会返回 true 。