とある問題を解くために以下のようなコードをかきました。
しかし、gravityメソッドが勝手にprivate扱いされてしまいます。
'#'の付いている行をすべてコメントアウトすると期待通りに動きました。
どなたか詳しい方、なぜgravityがprivate扱いされてしまうのか教えてください
処理系は2.3.1です。


line = gets.chomp.split(' ')
$W = line[0].to_i
$H = line[1].to_i
$N = line[2].to_i
$sen = Array.new
$H.times do
   $sen << gets.chomp.split("")
end
$sen.reverse!
$sen = $sen.transpose

def gravity #落ちる
   $sen.each do |y|
      y.delete('0')
      ($H-y.length).times do
         y << '0'
      end
   end
end #
$sen.gravity #
p $sen