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)
中的值将起作用。