2015-06-24 51 views
0

我正在嘗試編寫一個方法,該方法以字符串數組作爲參數,並返回array.reverse而實際不使用反向(使用Ruby)。我的大部分嘗試都會導致向陣列添加nils。我無法跟蹤這個算法。你有解決方案嗎?Ruby - 反向數組算法

+2

顯示其中一個嘗試! – Stan

回答

0

一個非常簡單的方法如下:

def reverser(array) 
    reversed = Array.new 
    array.length.times { reversed << array.pop } 
    reversed 
end 

我們剛剛流行過你的數組的最後一個元素,並將其推入一個新的數組,直到我們完成已經使所有數組的元素。

+0

應該指出的是,這個變種'array'。 (Downvote不是我的。) –

+0

除此之外,它基本上與卡里的答案相同(除了這個答案比卡里差)。 – sawa

+0

我點擊了這個,因爲我對編碼很陌生。這似乎是最直接的。我相信Cary的答案更好,但我還不熟悉許多方法和語法。 –

1
def reverse a; a.inject([], :unshift) end 

reverse(["a", "b", "c"]) # => ["c", "b", "a"] 
2

許多方法可以做到這一點。這裏有一個:

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]