在Ruby中将数组作为参数传递

时间:2015-07-22 18:52:45

标签: arrays ruby

我一直在学习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

2 个答案:

答案 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