[Jprogramming] How #: should have been designed
Tom Arneson
tom at tomarneson.com
Sun Dec 11 04:26:29 HKT 2011
If programmers lost their living when code failed, then there would be a
bunch of AutoDesk programmers on the street. My students and I put up with
AutoCAD Civil 3D crashing on a daily basis.
-----Original Message-----
From: programming-bounces at jsoftware.com
[mailto:programming-bounces at jsoftware.com] On Behalf Of Linda Alvord
Sent: Saturday, December 10, 2011 14:17
To: 'Programming forum'
Subject: Re: [Jprogramming] How #: should have been designed
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-bounces at jsoftware.com
[mailto:programming-bounces at 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-bounces at jsoftware.com
> [mailto:programming-bounces at 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
More information about the Programming
mailing list