Sorry, my line breaks got deleted in the email. Her is my Python code:

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 str(k)    
        l1 = range(1,200)
        l2 = range(1,200)
        bestfit = 10000
        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)
> From: [email protected]
> To: [email protected]
> Date: Tue, 7 Oct 2014 05:37:27 +0100
> Subject: [Jprogramming] Project Euler 85, Python and J
> 
> 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

Reply via email to