Hi, A dirty trick to get the job done would be to ravel the matrix ( , ), solve the 1d version of the problem and then get the "true" indexes with something like (<.@%&200 , 200&|). For example, if you needed to just find the max: (<.@%&200 , 200&|) (i. >./) , m where m is your matrix.
I know this isn't a nice way to solve the problem, but it should work. Sebastiano 2014-10-07 6:37 GMT+02:00 Jon Hough <jgho...@outlook.com>: > Project Euler 85: https://projecteuler.net/problem=85 > This problem is not really conceptually hard, but I am struggling with a J > solution.I have solved it in Python: > ============================================= > def pe85(larg, rarg): count = 0 llist = range(1, larg+1) > rlist = range(1, rarg+1) > for l in llist: for r in rlist: count += > l*r > return count > > if __name__ == "__main__": # test for 2x3 grid, as in question. k > = pe85(2,3) print "Test value: "+str(k) l1 = range(1,200) # > 200 lucky guess l2 = range(1,200) bestfit = 10000 # just a big > number area = 0 for i in l1: for j in l2: > diff = abs(2000000 - pe85(i,j)) if diff < > bestfit: area = i*j > bestfit = diff > print "AREA is "+str(area) > > > ================================================The above script will give > the final area of the closest fit to 2 million. (The python code may not be > the best). Also I tested all possibilities up to 200x200, which was chosen > arbitrarily(~ish). > Next my J. I go the inner calculation ok (i.e. see the function pe85 > above). In J I have: > pe85 =: +/@:+/@:((>:@:i.@:[) *"(0 _) (>:@:i.@:])) > NB. I know, too brackety. Any tips for improvement appreciated. > > > But from here things get tricky. If I do the calculation over 200x200 > possibilities I end up with a big matrix, of which I have to find the > closest value to 2 million, of which then I have to somehow get the (x,y) > values of and then find the area by x*y. > > The main issue is getting the (x,y) from the best fit value of the array. > > i.e. If I do pe85"(0)/~ 200, I get a big array, and I know I can get the > closest absolute value to 2 million but then I need to get the original > values to multiply together to give the best fit area. Actually I have > bumped into this issue many times. It is easy enough in a 1-d array,just do: > (I. somefunc ) { ]) > > or similar to get the index. But for two indices the problem is beyond me > at the moment. Any help appreciated.Regards,Jon > > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm