If the problem turns out to be the knapsack problem then there may not be
an efficient solution, and you would have to resort to heuristics and other
tricks to cut it down to size.


On Wed, Oct 16, 2013 at 4:15 PM, Joe Bogner <[email protected]> wrote:

> I jumped the gun earlier with my success of adding on negative numbers. It
> ran out of memory with N=14*2 = 28
>
> Roger, your solution solved the problem efficiently. I will study it and
> the essay. Since there are multiple solutions to the target number, I
> imagine if I compare enough reports and join the solutions I'll come to
> only a handful or one solution across all reports. The first report I tried
> had 474 solutions, when I hear there should be only one that satisfies the
> business logic I'm trying to reverse engineer.
>
> Thank you again.
>
>
> On Wed, Oct 16, 2013 at 7:07 PM, Roger Hui <[email protected]
> >wrote:
>
> > A shorter expression for the table c :
> >
> >    c =: _1 0 1{~((#x)#3)#:i.3^#x
> >    c -: <:3#.^:_1 i.3^#x
> > 1
> >
> >
> >
> > On Wed, Oct 16, 2013 at 3:41 PM, Roger Hui <[email protected]
> > >wrote:
> >
> > >    x=: 1 2.5 3.5 10 12 30
> > >
> > >    c=: _1 0 1{~((#x)#3)#:i.3^#x
> > >    ] d=: (15 = c+/ .*x)#c
> > > _1 _1 _1  1  1 0
> > > _1  1  1  1  0 0
> > >  1 _1 _1 _1  0 1
> > >  1  1  1 _1 _1 1
> > >
> > >    d +/ .*x
> > > 15 15 15 15
> > >
> > > See also http://www.jsoftware.com/jwiki/Essays/Odometer<
> > http://www.jsoftware.com/jwiki/Essays/Odometer?highlight=%28xkcd%29>
> > >
> > >
> > > On Wed, Oct 16, 2013 at 3:33 PM, Joe Bogner <[email protected]>
> wrote:
> > >
> > >> I'm working on a question that I was hoping J could help answer.
> > >>
> > >> I have a overall sum on a report and I'm trying to figure out what
> line
> > >> items went into it. The line items can be ignored, added or
> subtracted.
> > >>
> > >> In other words, given a value let's say 15, what combinations of add,
> > >> subtracting or ignoring numbers of a list would result in that sum?
> > >>
> > >> I found a solution on the right rack in J
> > >>
> > >>
> > >>
> >
> http://stackoverflow.com/questions/4632322/finding-all-possible-combinations-of-numbers-to-reach-a-given-sum
> > >>
> > >> (]#~15=+/@>)(]<@#~[:#:@i.2^#)1 5 10 2.5 2.5
> > >>
> > >>
> > >> That only appears to work on the add case. For example, if it worked
> as
> > I
> > >> desired, it would output
> > >>
> > >>
> > >> (]#~15=+/@>)(]<@#~[:#:@i.2^#) 10 2.5 12 3.5 1 30
> > >>
> > >> 10 3.5 2.5 -1
> > >>
> > >> Any ideas on how to approach this or any solutions handy?
> > >>
> > >> This post sounds like the right approach but I don't know how to
> > implement
> > >> it:
> > >>
> > >>
> > >>
> >
> http://stackoverflow.com/questions/10943562/find-all-the-addition-and-subtraction-combinations-from-an-array-of-numbers
> > >>
> > >> My report has between 10-55 possible combinations of numbers on it
> > >> depending on what the report is run on. The specific one I'm solving
> > right
> > >> now has 29
> > >>
> > >> Thanks
> > >> ----------------------------------------------------------------------
> > >> 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