From: Shin-ichiro HARA Date: 2000-12-14T02:55:27+09:00 Subject: [ruby-list:26531] Re: n-fold loop 原です。 |市川といいます。 |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進展開の問題 が出てたなあ。