我正在尝试从a中删除最小和最大元素对Array,并将它们存储在第二个元素中.有没有更好的方法来做这个或我不知道的Ruby方法可以实现这样的事情?
这是我的代码:
nums = [1, 2, 3, 4, 5, 6]
pairs = []; for n in nums
pairs << [n, nums.last]
nums.delete nums.last
nums.delete n
end
Run Code Online (Sandbox Code Playgroud)
目前的结果:
nums
#=> [2, 4]
pairs
#=> [[1, 6], [3, 5]]
Run Code Online (Sandbox Code Playgroud)
预期结果:
nums
#=> []
pairs
#=> [[1, 6], [2, 5], [3, 4]]
Run Code Online (Sandbox Code Playgroud)
假设nums已经排序并且可以修改,我喜欢这种方式,因为它具有机械感觉:
pairs = (nums.size/2).times.map { [nums.shift, nums.pop] }
#=> [[1, 6], [2, 5], [3, 4]]
nums
#=> []
Run Code Online (Sandbox Code Playgroud)
我看到@Drenmi有同样的想法使用shift和pop.
如果您不想修改nums,您当然可以在副本上操作.