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