Here's a simpler version: (= [: +/ [: I. ((0 = |~) i.)) To apply to an array you'll need to use "0 as Don suggests or alternatively &> (= [: +/ [: I. ((0 = |~) i.))&> 10 12 28 0 0 1
On Wed, Aug 10, 2011 at 8:11 AM, Uriel Zylbermann <[email protected]> wrote: > Thanks a lot! I am going to refresh ranking and go back to work.. > > On Tue, Aug 9, 2011 at 11:02 PM, Don Guinn <[email protected]> wrote: > >> The simplest way is to give the definition zero rank. >> >> (=([:+/((0=((|~)([:>:[:i.-&1)))#([:>:[:i.-&1))))"0]10 12 28 >> 0 0 1 >> >> On Tue, Aug 9, 2011 at 1:54 PM, Uriel Zylbermann < >> [email protected] >> > wrote: >> >> > Hi, I'm new to J so my programs might be a bit more complicated than >> > needed, >> > I would be happy if you could tolerate that(and perhaps even give me >> fixes >> > when needed). >> > >> > anyway, I have a monad function that checks if a number is a perfect >> > number: >> > >> > (=([:+/((0=((|~)([:>:[:i.-&1)))#([:>:[:i.-&1)))) >> > >> > this monad works for single numbers: >> > >> > (=([:+/((0=((|~)([:>:[:i.-&1)))#([:>:[:i.-&1))))10 >> > 0 >> > (=([:+/((0=((|~)([:>:[:i.-&1)))#([:>:[:i.-&1))))12 >> > 0 >> > (=([:+/((0=((|~)([:>:[:i.-&1)))#([:>:[:i.-&1))))28 >> > 1 >> > >> > but for lists it gives me a length error for some reason: >> > >> > (<([:+/((0=((|~)([:>:[:i.-&1)))#([:>:[:i.-&1))))10,12,28 >> > |length error >> > | (<([:+/((0=((|~)([:>:[:i.-&1)))#([:>:[:i.-&1))))10,12,28 >> > it was my understanding that a monad, when applied to a list, will work >> for >> > each element separately and then return the list of result, like this: >> > >> > >:i.10 >> > 1 2 3 4 5 6 7 8 9 10 >> > >> > I would be very grateful for any help understanding my error, thanks in >> > advance, Uriel. >> > ---------------------------------------------------------------------- >> > 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
