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