Levin Alexander
2/4/2006 2:44:00 PM
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 Grüße,Levin