For the diagonal matrix:
elems = [*-30..45].sample(8)
Matrix.diagonal(*elems)
For the rest, I'm not sure what you're trying to accomplish
Pergunta
I need to create a diagonal matrix (8x8) and fill it with random numbers in [-30..45] range After I need to transform array into vector and sort it
I tried different ways.
At first I create matrix (8x8)
matrix = Matrix.build(8) {0}
puts matrix.each_slice(matrix.column_size) {|r| p r }
Also I made an array with random numbers in range
array = (-30..45).to_a.shuffle
puts array [0..8]
And made a diagonal matrix
matrixd = Matrix.diagonal(1,2,3,4,5,6,7,8)
puts matrixd.each_slice(matrix.column_size) {|r| p r}
How can i fill diagonal matrix with my array and put it in vector? I have 2 algorithms for sorting vector
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
Solução
For the diagonal matrix:
elems = [*-30..45].sample(8)
Matrix.diagonal(*elems)
For the rest, I'm not sure what you're trying to accomplish