Ruby - 反向数组算法
Ruby - reverse array algorithm
我正在尝试编写一种方法,该方法将字符串数组作为其参数,并且 returns array.reverse 没有实际使用反向(使用 Ruby)。我的大部分尝试都导致将 nils 添加到数组中。我无法追踪这个算法。你有解决方案吗?
def reverse a; a.inject([], :unshift) end
reverse(["a", "b", "c"]) # => ["c", "b", "a"]
有很多方法可以做到这一点。这是一个:
a = (1..10).to_a
#=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = a.dup
a.size.times.with_object([]) { |_,c| c << b.pop }
#=> [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
一个非常简单的方法如下:
def reverser(array)
reversed = Array.new
array.length.times { reversed << array.pop }
reversed
end
我们只是弹出数组的最后一个元素并将其推入一个新数组,直到我们对数组的所有元素都这样做。
我正在尝试编写一种方法,该方法将字符串数组作为其参数,并且 returns array.reverse 没有实际使用反向(使用 Ruby)。我的大部分尝试都导致将 nils 添加到数组中。我无法追踪这个算法。你有解决方案吗?
def reverse a; a.inject([], :unshift) end
reverse(["a", "b", "c"]) # => ["c", "b", "a"]
有很多方法可以做到这一点。这是一个:
a = (1..10).to_a
#=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = a.dup
a.size.times.with_object([]) { |_,c| c << b.pop }
#=> [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
一个非常简单的方法如下:
def reverser(array)
reversed = Array.new
array.length.times { reversed << array.pop }
reversed
end
我们只是弹出数组的最后一个元素并将其推入一个新数组,直到我们对数组的所有元素都这样做。