---Joey wrote: > I am using that particular code here: > f =: 3 : 'x:+/y -(i.4)*] (%:y)+_1' > 1++/f"0 *:>:2*>:i.500 > Which is #28 on Project Euler, which I am using to learn J! > > I tried f =: 13 : 'x:+/y -(i.4)*] (%:y)+_1', then f; but the > result was boxed, and I wasn't sure how it should be formatted. > So how can I replace the definiton of f, into 1++/f"0 *:>:2*>:i.500. > And are there any things I am doing wrong in my code? > > Thanks, > Joey >
I haven't looked at the problem you're trying to solve but some minor improvements to your posted code ... f =: 3 : 'x:+/y -(i.4)*] (%:y)+_1' NB. your explicit verb 1++/f"0 *:>:2*>:i.500 669171001 I'm not sure why you were getting boxed results from the tacit representation of your explicit verb, it seems to work OK for me. ft =: 13 : 'x:+/y -(i.4)*] (%:y)+_1' 1++/ft"0 *:>:2*>:i.500 669171001 The tacit representation looks like this: ft [: x: [: +/ ] - 0 1 2 3 * [: ] _1 + %: You can simplify the explicit version a bit which will also simplify the tacit version as follows: ]ft2 =: 13 : 'x:+/y -(i.4)* _1+%:y' [: x: [: +/ ] - 0 1 2 3 * _1 + %: 1++/ft2"0 *:>:2*>:i.500 669171001 And the constants could be replaced by some J verbs. >:+/ft2"0 *:>:+:>: i.500 669171001 If you are wanting to incorporate the definition of ft2 into the sentence I think I would just do: >:+/([: +/ ] - (i.4)*_1+%:)"0 *:>:+:>:i.500 669171001 Now that I see what the problem is from Roger's post, another way of phrasing the solution might be: diags=: 3 : 0 'difs trs'=. |:}. i. 2,~ >.-: y trs=. *: trs >:+/,trs (-(i.4)&*)"0 difs ) diags 5 101 diags 1001 669171001 I'm sure there are other more concise ways! ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
