To Linda,

The question was to find the closest number of rectangles to 2 million, not 1 
million. But for one million, I am not sure you answer is correct. I changed my 
Python code to test for 1 million and got the values to be 31 and 63, and the 
number of rectangles made from a rectangle of sides 31 x 63 is 999936.

I think the verb "all" is under-counting, as 2 all 3 should be 18, not 16.

> From: lindaalv...@verizon.net
> To: programm...@jsoftware.com
> Date: Sat, 11 Oct 2014 02:28:18 -0400
> Subject: Re: [Jprogramming] Project Euler 85, Python and J
> 
> I have not followed the Python solution development.  However, I would
> appreciate it if you could explain what I am missing in the way I went about
> solving the problem.  My answer is 93 is under and 94 is over,
> 
> Thanks
> 
> Linda
> 
> -----Original Message-----
> From: programming-boun...@forums.jsoftware.com
> [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Linda Alvord
> Sent: Tuesday, October 07, 2014 4:34 AM
> To: programm...@jsoftware.com
> Subject: Re: [Jprogramming] Project Euler 85, Python and J
> 
> This fits in nicely somewhere in the elementary school years!  I hope that
> 93 by 93 is rhe largest rectangle that will have a number under 1 million
> rectangles.
> 
> I would introduce these functions in a math class.  It would be after they
> reach multiplication,
> 
>    f=: 13 :'(>:i.x)  */>:i.y'
>    g=: 13 :'(i.x<.y)<:/i.x>.y'
>    all=: 13 :'+/,((x<.y) g x>.y) * (x<. y) f x >.y'
> 
> A testing phase:
> 
>    2 f 3
> 1 2 3
> 2 4 6
>    3 f 2
> 1 2
> 2 4
> 3 6
>    3 f 3
> 1 2 3
> 2 4 6
> 3 6 9
>    2 g 3
> 1 1 1
> 0 1 1
>    3 g 2
> 1 1 1
> 0 1 1
>    3 g 3
> 1 1 1
> 0 1 1
> 0 0 1
>    2 ALL 3
> 16
>    3 ALL 2
> 16
>    3 ALL 3
> 25
>    93 ALL 93
> 9689050
>    93 ALL 94
> 10099924
>    94 ALL 94
> 10108760
>  
> When computer science appears in elementary school, these functions could be
> revealed.
> 
>   f
> ([: >: [: i. [) */ [: >: [: i. ]
>    g
> ([: i. <.) <:/ [: i. >.
>    all
> [: +/ [: , (<. g >.) * <. f >.
>    
>  
> 
>    f=: 13 :'(>:i.x)  */>:i.y'
>    g=: 13 :'(i.x<.y)<:/i.x>.y'
>    all=: 13 :'+/,((x<.y) g x>.y) * (x<. y) f x >.y'
> 
> I don't think in the language of your question, so I can't help you much
> there.
> 
> Linda
> 
> 
> -----Original Message-----
> From: programming-boun...@forums.jsoftware.com
> [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Jon Hough
> Sent: Tuesday, October 07, 2014 12:46 AM
> To: programm...@jsoftware.com
> Subject: Re: [Jprogramming] Project Euler 85, Python and J
> 
> 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: jgho...@outlook.com
> > To: programm...@jsoftware.com
> > 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
> ----------------------------------------------------------------------
> 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

Reply via email to