an explicit version for clarity
   rangei 
[ + >:@] i.@- [
   2 rangei 5 
2 3 4 5

dyad verb where y just holds the total so far.
4 : 'y + +/ 1= x +./ (>. x % 3) rangei (<. x % 2)'/ 2,~ 4+ i.11997 
7295374 NB. includes 1/3 and 1/2

   timespacex '4 : ''y + +/ 1= x +./ (>. x % 3) rangei (<. x % 2)''/ 2,~ 4+ 
i.11997' 
0.999943 446592 



----- Original Message -----
From: Skip Cave <[email protected]>
To: "[email protected]" <[email protected]>
Cc: 
Sent: Monday, June 16, 2014 12:14:20 PM
Subject: Re: [Jprogramming] Project Euler 73

It doesn't look like my approach of making a list of floating point
fractions between 1/2 and 1/3, converting to rationals, and eliminating
large numerators & denominators, is very practical. Even using a million
decimal fractions in evenly spaced steps between 1/2 and 1/3, that still
doesn't produce all the possible rational fractions between the two limits,
with numerators and denominators less than 12001.

Skip Cave
Cave Consulting LLC





On Sun, Jun 15, 2014 at 11:41 PM, Skip Cave <[email protected]> wrote:

> Raul, you're right. I need a finer step between all the fractions, as my
> list is missing a few fractions.
>
> Skip
>
> Skip Cave
> Cave Consulting LLC
>
>
> On Sun, Jun 15, 2014 at 7:51 PM, Raul Miller <[email protected]>
> wrote:
>
>> This doesn't seem to represent any of these values:
>>    4993r11983 4988r11971 4983r11959 4978r11947
>>
>> FYI,
>>
>> --
>> Raul
>>
>>
>>
>> On Sun, Jun 15, 2014 at 8:15 PM, Skip Cave <[email protected]>
>> wrote:
>>
>> > Well,
>> >
>> > load 'strings'
>> >    f =. x:1%2+10000%~i.10001  NB. Generate equal-spaced floating
>> fractions
>> > between 1/3 and 1/2
>> >   k =. 12001>".(": f) rplc ' ';',';'r';','   NB. Find all numerators and
>> > denominators less than 12001
>> >
>> > counts all numerators and denominators below 12000 as separate entities.
>> > Unfortunately, that
>> > wasn't what the problem asked.
>> >
>> > In order to count only rational fractions between 0.5 & 0.333 where both
>> > the numerator and the denominatorhave values of 12000 or less, we need
>> to
>> > add one more line to the program that pairs the
>> > numerator and denominator comparisons, and then "ands" them, to find
>> > fractions that have
>> > both the numerator and denominator below 12001.
>> >
>> >    +/ *./"1(10001 2) $ k     NB. And values pairwise & sum.
>> >
>> > That should get the correct answer. The whole thing takes less that 2
>> > seconds to run on my machine.
>> >
>> > Skip
>> >
>> >
>> >
>> >
>> > Skip Cave
>> > Cave Consulting LLC
>> >
>> >
>> > On Sun, Jun 15, 2014 at 6:39 PM, Raul Miller <[email protected]>
>> > wrote:
>> >
>> > > I generally avoid project euler, because I do not like working under
>> its
>> > > constraint on disclosure. So I'm pleased when something leaks out
>> that I
>> > > can play with. But I also try to live within the implied spirit of the
>> > > contest, so I'm not going to release my code.
>> > >
>> > > Still: a quick calculation suggests that J's floating point
>> > representation
>> > > is adequate for this problem (and gives a 30x speed improvement over
>> use
>> > of
>> > > rationals). Also, a trivial approach seems plenty adequate here
>> > >
>> > > Thanks,
>> > >
>> > > --
>> > > Raul
>> > >
>> > >
>> > >
>> > > On Sun, Jun 15, 2014 at 7:07 PM, David Lambert <
>> [email protected]>
>> > > wrote:
>> > >
>> > > > On 15/06/2014 16:59, Jon Hough wrote:
>> > > >>
>> > > >>> >Another Project Euler... (apologies)
>> > > >>> >#73http://projecteuler.net/problem=73
>> > > >>>
>> > > >>> >I found this one more tricky than it first seems.
>> > > >>> >My attempt fails.
>> > > >>> >My reasoning of solution. Trying to find all reduced fractions
>> with
>> > > >>> denominator and numerator in range 1... 12000 that are greater
>> than
>> > > 1/3 but
>> > > >>> less than 1/2.The most naive way would be to make a 12000x12000
>> grid
>> > of
>> > > >>> fractions, nubbing out duplicates.
>> > > >>>
>> > > >>
>> > > >    Note 'Naive solution to PE 73'
>> > > > Generate all the fractions one denominator at a time
>> > > > using  low  memory.   The program  exceeds  the  one
>> > > > minute time requirement even on your new computer.
>> > > >
>> > > > Method: insert  a verb into a  list of denominators.
>> > > > The verb is necessarily a  dyad.  y retains the list
>> > > > of  unique  fractions,  x  (a scalar)  is  the  next
>> > > > denominator to evaluate.  Therefor the verb could be
>> > > > a hook that generates  new fractions of one argument
>> > > > which it appends and  nubs with the other, producing
>> > > > a  "current result".   We'll start  with a  "current
>> > > > result" of 0, removed as a post-processing step.
>> > > > )
>> > > >
>> > > >    Filter=: (#~`)(`:6)
>> > > >    odd=: 2&|
>> > > >    odd Filter i.5
>> > > > 1 3
>> > > >
>> > > >    NB. generate the denominators and initial solution of 0
>> > > >    NB. Accumulating the results from few to many decreases
>> > > >    NB. the computational work.
>> > > >    data=: i.@:(_1x&-)
>> > > >    data 8
>> > > > 8 7 6 5 4 3 2 1 0
>> > > >
>> > > >    numerators=: >.@:-: (] + i.@:-) <.@:(1r3&*)
>> > > >
>> > > >    boxdraw_j_ 1
>> > > >
>> > > >    numerators&.>  8 14
>> > > > +---+-----+
>> > > >
>> > > > |2 3|4 5 6|
>> > > > +---+-----+
>> > > >    fractions =: %~ numerators
>> > > >
>> > > >    ~.@:(, fractions)~/ data 8
>> > > >    0 1r3 1r4 1r5 2r5 2r7 3r7 3r8
>> > > >
>> > > >    (1r3&< *. <&1r2)Filter ~.@:(, fractions)~/ data 8
>> > > > 2r5 3r7 3r8
>> > > >
>> > > >    #  (1r3&<*.<&1r2)Filter~.@:(, fractions)~/  data 8
>> > > > 3
>> > > >
>> > > >
>> > > >   NB. watch progress
>> > > >
>> > > >   show=: [ smoutput
>> > > >
>> > > >   # (1r3&<*.<&1r2)Filter~.@:(, fractions@:show)~/ data  500
>> > > >
>> > > >
>> > > >
>> ----------------------------------------------------------------------
>> > > > 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

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to