我的任务是从数组中选择最高和最低数字。我想我已经知道自己想要做什么,但只是努力以正确的格式访问信息以满足通过标准。
def high_and_low(numbers)
array = numbers.split(" ").map! {|x| x.to_i}
array.sort! {|a,b| b <=> a}
puts array[0, -1]
end
数字可能看起来像"80 9 17 234 100"
,要传递,我需要输出"9 234"
。我正在尝试puts array.first.last
,但未能弄明白。
答案 0 :(得分:13)
Array#minmax
方法可以完全满足您的需求:
array = [80, 9, 17, 234, 100]
array.minmax
#=> [9, 234]
在high_and_low
方法的上下文中使用,该方法接受输入并将结果作为字符串返回:
def high_and_low(numbers)
numbers.split. # `split` splits at whitespaces per default
map(&:to_i). # does the same as `map { |x| x.to_i }`
minmax. # extracts min and max
reverse. # reverses order to maxmin
join(' ') # joins min and max with a whitespace
end
high_and_low('80 9 17 234 100')
#=> "234 9"
答案 1 :(得分:0)
最简单的方法是使用min
和max
:
numbers = "80 9 17 234 100"
array = numbers.split(' ').map(&:to_i)
[array.min, array.max] #=> [9, 234]
如果标准没有内置功能,那么你的解决方案非常好。
答案 2 :(得分:0)
如果您不想使用逗号,请尝试:
array.minmax.join(' ')