Question

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
Was it helpful?

Solution

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top