The following verbs appear to do what you want.  --Kip Murray

plus =: [: (% +./) (+/ .* |.) , *&{:

neg =: -@{. , {:

minus =: plus neg

times =: [: (% +./) *

recip =: |.

divide =: times recip


On Sunday, March 6, 2016, Louis de Forcrand <[email protected]> wrote:

> I believe yours works if 1r2 + 3r4 would be written as 1 3 +pm 2 4.
> I would add:
>         pm=: 1 : '(,&{. (% +./)@((u/@:* |.) , */@]) ,&{:)"1'
>
> Louis
>
> > On 06 Mar 2016, at 18:55, Pascal Jasmin <[email protected]
> <javascript:;>> wrote:
> >
> > an alternate pm
> >
> > pm =: 1 : '(% +./)@((u/@:* |.) , */@])"1'
> >
> >
> >
> > ________________________________
> > From: Louis de Forcrand <[email protected] <javascript:;> <mailto:
> [email protected] <javascript:;>>>
> > To: [email protected] <javascript:;> <mailto:
> [email protected] <javascript:;>>
> > Sent: Sunday, March 6, 2016 12:31 PM
> > Subject: [Jprogramming] Fractions challenge
> >
> >
> > Try to write a verb or adverb(s) that can add, subtract, multiply, and
> divide
> > two vectors of shape two which represent two exact fractions:
> >
> >    1 2 plus 3 4
> > 5 4
> >    1 2 minus 3 4
> > _1 4
> >    1 2 times 3 4
> > 3 8
> >    1 2 divide 3 4
> > 2 3
> >
> > At first sight this may seem useless, as exact arithmetic is already
> implemented,
> > but the idea is to have your function work with complex numbers as well:
> >
> >    0j1 1j2 plus 0j1 2j1
> > _3j3 0j5
> >    0j1 1j2 minus 0j1 2j1
> > 1j1 0j5
> >    0j1 1j2 times 0j1 2j1
> > _1 0j5
> >    0j1 1j2 divide 0j1 2j1
> > 9.0072e15 7.20576e15j5.40432e15    NB. “exact” ; if you ask J to do the
> division,
> >                the result is correctly rounded off.
> >
> >    2 x: 2.5 3 3.5 ,: 4 4.5j2.5 5
> > |domain error
> > | 2     x:2.5 3 3.5,:4 4.5j2.5 5
> >    frc 2.5 3 3.5 ,: 4 4.5j2.5 5    NB. convert to fractions
> > 5    2
> > 3    1
> > 7    2
> >
> > 4    1
> > 7j_2    1j_1
> > 5    1
> >
> > The fractions need to be simplified (so the numerator and denominator are
> > relatively prime), so I would suggest first finding how to simplify them
> > (that shouldn’t be too hard). If you feel like it, you can write two
> other verbs
> > to convert between fraction vector and decimal representation as well.
> >
> > Mine (two adverbs and two verbs; +/- and */%, plus conversion &
> simplification):
> >
> > pm=:    1 : '(% +./)@(*&{: ,~ ,&{. u/@:* ,~&{:)"1'    NB. Plus Minus ->
> m +pm n
> > td=:    1 : '(% +./)@:u"1’                NB. Times Divide -> m *td n
> > simp=:    (% +./)"1                     NB. SIMPlify fractions
> > dec=:    %/"1 :.((* (% +./)@,"0 ]) (>:@- >.))        NB. convert to
> DECimal/fraction
> >
> >
> > PS: On http://www.jsoftware.com/mailman/listinfo/programming <
> http://www.jsoftware.com/mailman/listinfo/programming> <
> http://www.jsoftware.com/mailman/listinfo/programming <
> http://www.jsoftware.com/mailman/listinfo/programming>> it says to send
> > messages to [email protected] <javascript:;> <mailto:
> [email protected] <javascript:;>> <mailto:
> [email protected] <javascript:;> <mailto:
> [email protected] <javascript:;>>>. Shouldn’t this be
> simply
> > [email protected] <javascript:;> <mailto:
> [email protected] <javascript:;>> <mailto:
> [email protected] <javascript:;> <mailto:[email protected]
> <javascript:;>>>?
> >
> > Good luck,
> > Louis
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm <
> http://www.jsoftware.com/forums.htm>
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm <
> http://www.jsoftware.com/forums.htm>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm



-- 
Sent from Gmail Mobile
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to