Raul, I can follow most of your solution, and it looks right. What is
bothering me is that I cut & pasted Roger's solution into my JQt and got a
different answer:
Roger's post:
   +/ <.@(%&2)@<: n - 3*i.<.n-3 [ n=: 1e2
833
   +/ <.@(%&2)@<: n - 3*i.<.n-3 [ n=: 1e3
83333
   +/ <.@(%&2)@<: n - 3*i.<.n-3 [ n=: 1e4
8333333
   +/ <.@(%&2)@<: n - 3*i.<.n-3 [ n=: 1e5
833333333
   +/ <.@(%&2)@<: n - 3*i.<.n-3 [ n=: 1e6
83333333333

My copy/ paste execution of Roger's code:

+/ <.@(%&2)@<: n - 3*i.<.n-3 [ n=: 1e2

_2207

+/ <.@(%&2)@<: n - 3*i.<.n-3 [ n=: 1e3

_247007

+/ <.@(%&2)@<: n - 3*i.<.n-3 [ n=: 1e4

_24970007

+/ <.@(%&2)@<: n - 3*i.<.n-3 [ n=: 1e5

_2499700007

+/ <.@(%&2)@<: n - 3*i.<.n-3 [ n=: 1e6

_249997000007


Why are my answers so different from Roger's?

Engine: j807 /j64/windows Beta-c: commercial/2018-03-13T17:40:01 Library:
8.07.09 Qt IDE: 1.7.1/5.9.4 Platform: Win 64

Skip



On Sun, May 20, 2018 at 1:14 PM Raul Miller <rauldmil...@gmail.com> wrote:

> If you are looking for a way of verifying Henry's and Roger's
> approaches, perhaps this:
>
> A partition of three integers summing to X can be broken down into an
> integer Y and a partition of two integers Z. We want X=Y+Z and we want
> both integers in Z to not exceed Y.
>
> If we ignore the Y constraint, the number of partitions of two
> integers summing to Z is <.Z%2
>
> If we include the Y constraint, the number of partitions of two
> integers summing to Z is 0 >. (<.Z%2) <.   <.(Z -~ 2 2 p. Y)%2
>
> (please double check my work here, I don't feel up to explaining this
> right now)
>
> The relevant values of Y vary from 1 through X-2 (anything outside
> this range contributes zero to the sum of possibilities). And, Z=X-Y
>
> So, anyways, we can define ZY to determine how many partitions sum to
> Z with the constraint that both of them are smaller than Y:
>
> ZY=: 0 >. <.@-:@[ <. <.@-:@(-~ 2 2&p.)
>
> And, we can define X as the sum of all relevant possibilities here:
>
> X=:  +/@(- ZY ]) 1 + i.@-&2
>
>    X 1e6
> 83333333333
>
> That looks pretty close (assuming I haven't made any mistakes)...
>
> --
> Raul
>
>
> On Sun, May 20, 2018 at 1:42 PM, Skip Cave <s...@caveconsulting.com>
> wrote:
> > I can follow Henry's clever solution.
> >
> > 0 ": 6 %~ (-: 999998 * 999999) + 3 * -: 999998
> >
> > 83333333333
> >
> > I tried to replicate Roger's partition approach, and ran into memory
> > issues. Roger must have more memory on his machine:
> >
> > pnk
> >
> > 4 : 0"0
> >
> > n=. 0>.x [ k=. y
> >
> > if. 1>:n<.k do. x: (0<n)*1=k else. ((n-1) pnk k-1) + (n-k) pnk k end.
> >
> > )
> >
> > 1e2 pnk 3
> >
> > 833
> >
> > 1e3 pnk 3
> >
> > 83333
> >
> > 1e4 pnk 3
> >
> > |stack error: pnk
> >
> > | ((n-1)pnk k-1)+(n-k) pnk k
> >
> > However, as Roger points out, this still does show the trend that the
> > answer is likely 83333333333.
> >
> > Then I tried to replicate Roger's second approach:
> >
> > +/ <.@(%&2)@<: n - 3*i.<.n-3 [ n=: 1e2
> >
> > _2207
> >
> > +/ <.@(%&2)@<: n - 3*i.<.n-3 [ n=: 1e3
> >
> > _247007
> >
> > +/ <.@(%&2)@<: n - 3*i.<.n-3 [ n=: 1e4
> >
> > _24970007
> >
> >
> > Engine: j807 /j64/windows Beta-c: commercial/2018-03-13T17:40:01 Library:
> > 8.07.09 Qt IDE: 1.7.1/5.9.4 Platform: Win 64
> >
> >
> > Something's wrong here, as I can't replicate Roger's results, but I'm not
> > sure what is going wrong.
> >
> >
> > Skip
> >
> >
> >
> >
> > On Sun, May 20, 2018 at 9:31 AM Henry Rich <henryhr...@gmail.com> wrote:
> >
> >> Taking advantage of the fact that thepartitions have only 3 elements.
> >>
> >> If the first number is i, the second number can be anything from 1 to
> >> 999999-iand the third number is then uniquely fixed.
> >>
> >> Since ican run from 1 to 999998, the total number of such choices is (-:
> >> 999998 * 999999).
> >>
> >> But this counts triplets more than once.  Any triplet in which the
> >> numbers are unique will be counted 6 times.
> >>
> >> Any triplet containing a repetition will be counted 3 times: once when i
> >> is the unrepeated number and twice when i is the repeated number.  This
> >> happens here whenever i is even, thus
> >> (-:999998) times.
> >>
> >> Any triplet containing all 3 numbers equal will be counted just once,
> >> but there aren't any of them.
> >>
> >> To find the unique triplets, we take (-: 999998 * 999999), add in 3 *
> >> (-:999998) to bring the 3-times-repeated cases up to 6-times-repeated,
> >> then divide by 6:
> >>
> >> 0 ": 6 %~ (-: 999998 * 999999) + 3 * -: 999998
> >>
> >> 83333333333
> >>
> >>
> >> Henry Rich
> >>
> >>
> >>
> >> ---
> >> This email has been checked for viruses by AVG.
> >> http://www.avg.com
> >> ----------------------------------------------------------------------
> >> 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