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]> wrote:
>
> an alternate pm
>
> pm =: 1 : '(% +./)@((u/@:* |.) , */@])"1'
>
>
>
> ________________________________
> From: Louis de Forcrand <[email protected] <mailto:[email protected]>>
> To: [email protected] <mailto:[email protected]>
> 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]
> <mailto:[email protected]>
> <mailto:[email protected]
> <mailto:[email protected]>>. Shouldn’t this be simply
> [email protected] <mailto:[email protected]>
> <mailto:[email protected] <mailto:[email protected]>>?
>
> 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