Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在一行中选择数组的第一个和最后一个元素_Arrays_Ruby - Fatal编程技术网

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

Arrays 在一行中选择数组的第一个和最后一个元素,arrays,ruby,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 def高和低(数字) 数组=数字。拆分(“”)。映射!{| x | x.to_i} 数组,排序!{| a,

我的任务是从数组中选择最高和最低的数字。我想我已经有了一个好主意,我想做什么,但只是努力以正确的格式访问信息,以满足通过标准

def high_and_low(numbers)
  array = numbers.split(" ").map! {|x| x.to_i}
  array.sort! {|a,b| b <=> a}
  puts array[0, -1]
end
def高和低(数字)
数组=数字。拆分(“”)。映射!{| x | x.to_i}
数组,排序!{| a,b | b a}
放置数组[0,-1]
结束

数字可能看起来像
“80917234 100”
,要通过,我需要输出
“9234”
。我试着把数组放在第一位。最后一位,但还没有弄明白。最简单的方法就是使用
min
max

numbers = "80 9 17 234 100"
array = numbers.split(' ').map(&:to_i)
[array.min, array.max] #=> [9, 234]
如果标准没有内置函数,则您的解决方案相当不错。

有一种方法可以完全满足您的需要:

array = [80, 9, 17, 234, 100]
array.minmax
#=> [9, 234]
在接受输入并以字符串形式返回结果的
high\u和\u 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"

如果不需要逗号,请尝试:

array.minmax.join(' ')

谢谢,我最终不得不使用:def high_and_low(numbers)array=numbers.split(“”).map!{| x | x.to|i}返回数组。minmax.reverse.join(“”)结束感谢您的帮助。Bleh,格式化问题您最终使用了哪种解决方案?感谢您的帮助,我忘了提到我必须先发布最大值,然后发布最小值,我最终使用了array.minmax.reverse.join。为什么不能使用[0,-1]?@EatsIndigo:因为
[]
方法不接受多个参数,但
values\u在
中接受:
array。在(0,-1)
中的值将起作用。