On 2/4/06, Christian Neukirchen <chneukirchen / gmail.com> wrote:> Levin Alexander <levin / grundeis.net> writes:>> >   12345.to_a #=> [1,2,3,4,5]> >   42.to_a(2) #=> [1,0,1,0,1,0]> >   23.to_a(4,5) #=> [0,0,1,1,3]> >   -10.to_a #=> ???
The order should probably be reversed, so that the least significantdigit is at index 0:
12345.encode(10) #=> [5,4,3,2,1]
> It should be twos-complement for negative numbers, of course. ;-)
But this would need to create an infinite array:
-2.encode(2) #=> [0,1,1,1,1,1,1,1,1,1,...]
> > Maybe the default base should be 2 to be consistent with Fixnum#[]> >> > Thoughts?>> IMO a useful method, *but*: Don't call it #to_a.  to_a has certain> duck-typing aspects, and this usage is too rare to be triggered a lot> (just think of a = 42; b = [*a]).
Good point.
> Also, you may want to extend it to be like APL's "encode" (tack), so you> can do stuff like:>> 1776.encode(8)                 # => [1, 0, 2, 2]  (octal)> 105246.encode(0, 1760, 3, 12)  # => [1,     1163,  1,    6]>                                #    [miles, yards, feet, inches]
This is probably more useful than the min_length parameter.
> Then, we'd also need an "decode":>>   [14,   12,    20,      51].decode(0, 24, 60, 60)  # => 1254057> # [days, hours, minutes, seconds]>> (The examples were taken from "APL\360 Primer, Student Text, IBM, 1969".)
Viele Gre,Levin