Advertisement
sySmago

matrix_mixer

Apr 6th, 2022
1,216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 4.07 KB | None | 0 0
  1. class MatrixMixer
  2.   def sorter(matrix, instructions)
  3.     instructions.split("\n").each do |instruction|
  4.       line_or_row = instruction.split(":")[0].split(" ")[0]
  5.       line_row_affected = instruction.split(":")[0].split(" ")[1].to_i
  6.       command = instruction.split(":")[1]
  7.       aux_arr = []
  8.  
  9.       if line_or_row == "COLUNA"
  10.         (0..matrix.length() - 1).each do |linha|
  11.           element = matrix[linha][line_row_affected]
  12.           if command == "ÍMPARES"
  13.             if element.is_a? Integer
  14.               if not element.even?
  15.                 aux_arr.push(element)
  16.               end
  17.             end
  18.             if linha == matrix.length() - 1
  19.               aux_arr.sort!
  20.               index = 0
  21.               (0..(matrix.length() - 1)).each do |linha|
  22.                 element = matrix[linha][line_row_affected]
  23.                 if element.is_a? Integer
  24.                   if not element.even?
  25.                     matrix[linha][line_row_affected] = aux_arr[index]
  26.                     index += 1
  27.                   end
  28.                 end
  29.               end
  30.             end
  31.                
  32.           elsif command == "PARES"
  33.             if element.is_a? Integer
  34.               if element.even?
  35.                 aux_arr.push(element)
  36.               end
  37.             end
  38.             if linha == matrix.length() - 1
  39.               aux_arr.sort!
  40.               index = 0
  41.               (0..(matrix.length() - 1)).each do |linha|
  42.                 element = matrix[linha][line_row_affected]
  43.                 if element.is_a? Integer
  44.                   if element.even?
  45.                     matrix[linha][line_row_affected] = aux_arr[index]
  46.                     index += 1
  47.                   end
  48.                 end
  49.               end
  50.             end
  51.  
  52.           elsif command == "ALFABETO"
  53.             if element == nil
  54.               next
  55.             end
  56.             if not element.is_a? Integer
  57.               aux_arr.push(element)
  58.             end
  59.             if linha == matrix.length() - 1
  60.               aux_arr.sort!
  61.               index = 0
  62.               (0..(matrix.length() - 1)).each do |linha|
  63.                 element = matrix[linha][line_row_affected]
  64.                 if element == nil
  65.                   next
  66.                 end
  67.                 if not element.is_a? Integer
  68.                   matrix[linha][line_row_affected] = aux_arr[index]
  69.                   index += 1
  70.                 end
  71.               end
  72.             end
  73.           end
  74.         end
  75.  
  76.       elsif line_or_row == "LINHA"
  77.         if command == "ÍMPARES"
  78.           aux_arr = matrix[line_row_affected].select {|element| element.is_a? Integer}.select { |element| not element.even? }.sort
  79.           index = 0
  80.           (0..(matrix[line_row_affected].length() - 1)).each do |coluna|
  81.             element = matrix[line_row_affected][coluna]
  82.             if element.is_a? Integer
  83.               if not element.even?
  84.                 matrix[line_row_affected][coluna] = aux_arr[index]
  85.                 index += 1
  86.               end
  87.             end
  88.           end
  89.                
  90.         elsif command == "PARES"
  91.           aux_arr = matrix[line_row_affected].select { |element| element.is_a? Integer }.select { |element| element.even? }.sort
  92.           index = 0
  93.           (0..(matrix[line_row_affected].length() - 1)).each do |coluna|
  94.             element = matrix[line_row_affected][coluna]
  95.             if element.is_a? Integer
  96.               if element.even?
  97.                 matrix[line_row_affected][coluna] = aux_arr[index]
  98.                 index += 1
  99.               end
  100.             end
  101.           end
  102.  
  103.         elsif command == "ALFABETO"
  104.           aux_arr = matrix[line_row_affected].select { |element| not element.is_a? Integer }.sort
  105.           index = 0
  106.           (0..(matrix[line_row_affected].length() - 1)).each do |coluna|
  107.             element = matrix[line_row_affected][coluna]
  108.             if not element.is_a? Integer
  109.               matrix[line_row_affected][coluna] = aux_arr[index]
  110.               index += 1
  111.             end
  112.           end
  113.         end
  114.       end
  115.     end
  116.     matrix
  117.   end
  118. end
  119.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement