0
通過引用它們的指示重新排列數組元素的最簡單方法是什麼?像這樣的東西:重排元素
[:a, :b, :c, :d].rearrange(3, 1, 0, 2) # => [:d, :b, :a, :c]
[:a, :b, :c, :d].rearrange!(3, 1, 0, 2) # => [:d, :b, :a, :c]
通過引用它們的指示重新排列數組元素的最簡單方法是什麼?像這樣的東西:重排元素
[:a, :b, :c, :d].rearrange(3, 1, 0, 2) # => [:d, :b, :a, :c]
[:a, :b, :c, :d].rearrange!(3, 1, 0, 2) # => [:d, :b, :a, :c]
好,林心如已經有了這種方法,只知道它被稱爲values_at:
>> [:a, :b, :c, :d].values_at(3, 1, 0, 2)
=> [:d, :b, :a, :c]
我會把它轉過來。單個置換隻是其中一個陣列映射到另一個陣列功能所以這很自然:
a = [:a, :b, :c, :d]
permuted = [3, 1, 0, 2].map { |i| a[i] }
,如果有必要很容易猴補丁到數組:
class Array
def permute(*p)
p.map { |i| self[i] }
end
end
錯誤檢查,permute!
,進一步細微之處留作練習。