find=: 13 :'(+/(y>x^i.21))#x' find [ #~ [: +/ ] > (i.20) ^~ [ 2 find 10000 2 2 2 2 2 2 2 2 2 2 2 2 2 2 $2 find 10000 14 $3 find 10000 3 3 3 3 3 3 3 3 3 $3 find 10000 9 4 find 10000 4 4 4 4 4 4 4 $4 find 10000 7 4^7 16384 3^9 19683
2^20 1.04858e6 This should handle cases up to one million. The left argument is the base and the right is the maximum number you need convert to the given base. All bets are off if you have something like 24 60 60 for minutes to days 24 60 60 . If I were creating a contest and I could get this far I would include the concept because I could cobble together an answer. Another day I may do the same exercise a totally different way. Usually it tends to encourage even better ways for accomplishing the task. I tend to stay away from remembering useful code and try to approach the problem anew. I have the luxury of not having my living dependent upon never having the code break or have it have some unintended consequences. Linda -----Original Message----- From: programming-boun...@jsoftware.com [mailto:programming-boun...@jsoftware.com] On Behalf Of Kip Murray Sent: Saturday, December 10, 2011 10:07 AM To: Programming forum Subject: Re: [Jprogramming] How #: should have been designed Linda, you may want to look up two's-compliment arithmetic, see http://en.wikipedia.org/wiki/Two's_complement Your idea in hcla is nice. Can you figure out a way to calculate the number of 2's required for the left argument? For example you would need four 2's for (2 2 2 2 hcla i: 5) -: hc i: 5 1 On 12/10/2011 3:56 AM, Linda Alvord wrote: > Kip, Is this what you are looking for: > > > hcla=: 13 :'x#:y' > ]d=:2 2 2 hcla i:2 > 1 1 0 > 1 1 1 > 0 0 0 > 0 0 1 > 0 1 0 > > hcinvla=:hcla^:_1 hcla > hcinvla d > |length error: hcinvla > | hcinvla d > > hcla > #: > hcinvJ=:#:^:_1 > hcinvJ > #:^:_1 > > hcinvJ d > 6 7 0 1 2 > > hcinvla > #. > hcinvla=: 13 :'#.y' > hcinvla d > 6 7 0 1 2 > > Raul's new improved answer hc doesn't appear to deal with the negative > values. My inverse does the best it can with the data it gets. > > My code is mostly from the dictionary. I'm not sure what would be the best > way to deal with negative binary numbers. Maybe I'll remember something > about that a little later. > > Linda > > > -----Original Message----- > From: programming-boun...@jsoftware.com > [mailto:programming-boun...@jsoftware.com] On Behalf Of Kip Murray > Sent: Saturday, December 10, 2011 1:02 AM > To: Programming forum > Subject: Re: [Jprogramming] How #: should have been designed > > Now we need an inverse for Raul's improved #: ("hash colon") > > hc NB. Raul's improved #: > {.@#:@(,: (2 * |)) > > hc i: 2 > 1 1 0 > 1 1 1 > 0 0 0 > 0 0 1 > 0 1 0 > > hcinv NB. improvement sought > 2&#.`(2&#.@}. - 2 ^<:@#)@.{."1 > > hcinv hc i: 2 > _2 _1 0 1 2 > > On 12/8/2011 2:41 PM, Raul Miller wrote: > ... > But this would work just as well, as a model: > > {.@#:@(,: 2 * |)i:2 > 1 1 0 > 1 1 1 > 0 0 0 > 0 0 1 > 0 1 0 > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm