This is my code, which works, but it's too big. I want to refactor it.
req_row = -1
req_col = -1
a.each_with_index do |row, index|
  row.each_with_index do |col, i|
     if col == 0
        req_row = index
        req_col = i
        break
     end
  end
end
if req_col > -1 and req_row > -1
  a.each_with_index do |row,index|
    row.each_with_index do |col, i|
      print (req_row == index or i == req_col) ? 0 : col
       print " "
    end
    puts "\r"
  end
end
Input: 2D Array
1  2  3  4 
5  6  7  8
9  10 0 11
12 13 14 15  
Required output:
1  2  0  4 
5  6  0  8
0  0  0  0
12 13 0  15  
				
                        
I'm surprised the Matrix class is not used more:
Note
Matrixobjects are immutable. To change individual elements you must create a new matrix.A slight modification is required if you wish to do this for every zero in the matrix: