Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class MatrixMixer
- def sorter(matrix, instructions)
- instructions.split("\n").each do |instruction|
- line_or_row = instruction.split(":")[0].split(" ")[0]
- line_row_affected = instruction.split(":")[0].split(" ")[1].to_i
- command = instruction.split(":")[1]
- aux_arr = []
- if line_or_row == "COLUNA"
- (0..matrix.length() - 1).each do |linha|
- element = matrix[linha][line_row_affected]
- if command == "ÍMPARES"
- if element.is_a? Integer
- if not element.even?
- aux_arr.push(element)
- end
- end
- if linha == matrix.length() - 1
- aux_arr.sort!
- index = 0
- (0..(matrix.length() - 1)).each do |linha|
- element = matrix[linha][line_row_affected]
- if element.is_a? Integer
- if not element.even?
- matrix[linha][line_row_affected] = aux_arr[index]
- index += 1
- end
- end
- end
- end
- elsif command == "PARES"
- if element.is_a? Integer
- if element.even?
- aux_arr.push(element)
- end
- end
- if linha == matrix.length() - 1
- aux_arr.sort!
- index = 0
- (0..(matrix.length() - 1)).each do |linha|
- element = matrix[linha][line_row_affected]
- if element.is_a? Integer
- if element.even?
- matrix[linha][line_row_affected] = aux_arr[index]
- index += 1
- end
- end
- end
- end
- elsif command == "ALFABETO"
- if element == nil
- next
- end
- if not element.is_a? Integer
- aux_arr.push(element)
- end
- if linha == matrix.length() - 1
- aux_arr.sort!
- index = 0
- (0..(matrix.length() - 1)).each do |linha|
- element = matrix[linha][line_row_affected]
- if element == nil
- next
- end
- if not element.is_a? Integer
- matrix[linha][line_row_affected] = aux_arr[index]
- index += 1
- end
- end
- end
- end
- end
- elsif line_or_row == "LINHA"
- if command == "ÍMPARES"
- aux_arr = matrix[line_row_affected].select {|element| element.is_a? Integer}.select { |element| not element.even? }.sort
- index = 0
- (0..(matrix[line_row_affected].length() - 1)).each do |coluna|
- element = matrix[line_row_affected][coluna]
- if element.is_a? Integer
- if not element.even?
- matrix[line_row_affected][coluna] = aux_arr[index]
- index += 1
- end
- end
- end
- elsif command == "PARES"
- aux_arr = matrix[line_row_affected].select { |element| element.is_a? Integer }.select { |element| element.even? }.sort
- index = 0
- (0..(matrix[line_row_affected].length() - 1)).each do |coluna|
- element = matrix[line_row_affected][coluna]
- if element.is_a? Integer
- if element.even?
- matrix[line_row_affected][coluna] = aux_arr[index]
- index += 1
- end
- end
- end
- elsif command == "ALFABETO"
- aux_arr = matrix[line_row_affected].select { |element| not element.is_a? Integer }.sort
- index = 0
- (0..(matrix[line_row_affected].length() - 1)).each do |coluna|
- element = matrix[line_row_affected][coluna]
- if not element.is_a? Integer
- matrix[line_row_affected][coluna] = aux_arr[index]
- index += 1
- end
- end
- end
- end
- end
- matrix
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement