2014-03-24 50 views
0

我需要創建一個對角矩陣(8×8),並用在[-30..45]範圍 隨機數填充後我需要變換陣列到載體和排序它紅寶石從隨機數

對角矩陣我嘗試了不同的方式。

起初創建矩陣(8×8)

matrix = Matrix.build(8) {0} 
puts matrix.each_slice(matrix.column_size) {|r| p r } 

另外我與隨機數的陣列範圍

array = (-30..45).to_a.shuffle 
puts array [0..8] 

並提出的對角矩陣

matrixd = Matrix.diagonal(1,2,3,4,5,6,7,8) 
puts matrixd.each_slice(matrix.column_size) {|r| p r} 

如何能我用我的數組填充對角矩陣並將其放入向量中? 我有2種算法進行排序向量

class Array 
    def bubblesort! 
    length.times do |j| 
     for i in 1...(length - j) 
     if self[i] < self[i - 1] 
      self[i], self[i - 1] = self[i - 1], self[i] 
     end 
     end 
    end 
    self 
    end 
end 

class Array 
    def selectionsort! 
    0.upto(length - 2) do |i| 
     (min_idx = i + 1).upto(length - 1) do |j| 
     if self[j] < self[min_idx] 
      min_idx = j 
     end 
     end 
     if self[i] > self[min_idx] 
     self[i], self[min_idx] = self[min_idx], self[i] 
     end 
    end 
    self 
    end 
end 
+0

你能更什麼具體說明創建對角矩陣後你想要做什麼?輸出示例會很有幫助。 –

回答

3

對於對角矩陣:

elems = [*-30..45].sample(8) 
Matrix.diagonal(*elems) 

至於其他,我不知道你要完成

+3

產生'NoMethodError:未定義的方法'sample'爲-30..45:Range'。您可以將其更改爲'[* -30..45] .sample(8)'而不是修復它,或者將其改爲'(-30..45).to_a.sample(8)'。 –

+0

Oups,修好了,謝謝! –

+1

其餘的只是'Vector [* elems.sort]'我想。 –