Advertisement
brewersfan1976

reverse_on_diagonals.rb

Oct 16th, 2016
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.03 KB | None | 0 0
  1. def reverseOnDiagonals(matrix)
  2.     array = Array.new(matrix.length){Array.new matrix[0].length}
  3.     x = matrix.length - 1
  4.     y = matrix[0].length - 1
  5.     a = 0
  6.     b = 0
  7.    
  8.     # reverse the first longest diagonal
  9.    
  10.     while (x >= 0)
  11.           array[a][b] = matrix[x][y]
  12.           x = x - 1
  13.           y = y - 1
  14.           a = a + 1
  15.           b = b + 1
  16.     end
  17.    
  18.     # reverse the second longest diagonal
  19.    
  20.     x = matrix.length - 1
  21.     y = 0
  22.     a = 0
  23.     b = matrix[0].length - 1
  24.    
  25.     while (x >= 0)
  26.           array[a][b] = matrix[x][y]
  27.           x = x - 1
  28.           y = y + 1
  29.           a = a + 1
  30.           b = b - 1
  31.     end
  32.    
  33.     # fill in the rest
  34.  
  35.     x = 0
  36.     y = 0
  37.    
  38.     while (x < matrix.length)
  39.         while (y < matrix[0].length)
  40.               if array[x][y] == nil then
  41.                  array[x][y] = matrix[x][y]
  42.               end
  43.                  
  44.               y = y + 1
  45.         end
  46.            
  47.         x = x + 1
  48.         y = 0
  49.     end
  50.    
  51.     return array
  52. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement