原です。

|市川といいます。

|class Integer
|  def tod(x = 10)
|    return [ 0 ] if self == 0
|    i = self.dup
|    c = []
|    while i > 0
|      c << (i % x)
|      i /= x
|    end
|    c.reverse
|  end
|end

4**4 までの4進展開を使うんですね。面白いですね。

dup はいらない、divmod で割り算と余りを同時に得る、unshift
すれば reverse はいらない、などを修正すると、、、

class Integer
   def base(n)
     i, c = self, []
     while i > 0
       i, r = i.divmod(n)
       c.unshift r
     end
     c
   end
end

n = m = 4
for i in 0...n**m
   a = i.base(n)
   p [0]*(m-a.size) + a
end

そういえば Perl/Ruby Conference の One-liner Battle で9進展開の問題
が出てたなあ。