在一行中选择数组的第一个和最后一个元素

时间:2015-11-02 13:43:48

标签: arrays ruby

我的任务是从数组中选择最高和最低数字。我想我已经知道自己想要做什么,但只是努力以正确的格式访问信息以满足通过标准。

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,但未能弄明白。

3 个答案:

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

最简单的方法是使用minmax

numbers = "80 9 17 234 100"
array = numbers.split(' ').map(&:to_i)
[array.min, array.max] #=> [9, 234]

如果标准没有内置功能,那么你的解决方案非常好。

答案 2 :(得分:0)

如果您不想使用逗号,请尝试:

array.minmax.join(' ')