Arrays, Hashes, and Enumerables(homework for 01)

1987 ワード

Arrays, Hashes, and Enumerables
——孫琨SealSun
1、問題
  Check the Ruby 2.x documentation on Array, Hash and Enumerable as they could help tremendously with these exercises.
 Define a method sum(array) that takes an array of integers as an argument and returns the sum of its elements. For an empty array it should return zero.  Define a method max_2_sum(array) which takes an array of integers as an argument and returns the sum of its two largest elements. For an empty array it should return zero. For an array with just one element, it should return that element.  Define a method sum_to_n?(array) that takes an array of integers and an additional integer, n, as arguments and returns true if any two elements in the array of integers sum to n. An empty array should sum to zero by definition.   You can check your progress by running rspec spec/part1_spec.rb, or just running autotest and leaving it running.
2、解答コード
#-------------------------------
#-----    :homework for 01
#-----    :ruby 2.2.3
#-----      :  SealSun
#-----    :UCAS  
#-----    :2015 10 05   
#--------------------------------

def sum 
# YOUR CODE HERE
  sum_num = 0
  arr_size=arr.size
  if arr.size==0 #            
    return 0
  end
  
  arr.each do |i|
    sum_num += i
  end
  return sum_num
end

def max_2_sum arr
  # YOUR CODE HERE
  sum_num_2 = 0
  arr_size=arr.size
  if arr_size==0 #          
    return 0
  end
  if arr_size==1 #         1 
    return arr[0]
  end
 
  arr_sort=arr.sort #   ,         
  for i in 1..2
    sum_num_2 += arr_sort[arr_size-i]
  end
  return sum_num_2
end

def sum_to_n? arr, n
  # YOUR CODE HERE
  sum_num_n = 0
  arr_size=arr.size
  if arr_size==0 #          
    return 0
  end
  if arr_size<=n #           n 
    arr.each do |i|
      sum_num_n += i
    end
    return sum_num_n
  end

  arr_sort=arr.sort #   ,      n  
  for i in 1..n
    sum_num_n += arr_sort[arr_size-i]
  end
  return sum_num_n
end