Nice trick with #:. Thank you. Both methods always generates more candidates than needed. I'll report on my research..
On Sun, Aug 9, 2015 at 6:32 AM Raul Miller <[email protected]> wrote: > I would not use A. when building sets. > > Instead: > > sets=: (*"1 [: #:@i. 2^#)1+i.9 > sums=: +/"1 sets > Ns=: +/"1 *sets > > sol=:4 :0 > 0 -."1~ sets #~ (x=Ns)*y=sums > ) > > 4 sol 12 > 1 2 4 5 > 1 2 3 6 > timespacex '4 sol 12' > 2.8e_5 9472 > timespacex '9 sol 45' > 1.6e_5 8960 > > Seems efficient enough to me? > > Thanks, > > -- > Raul > > > On Sat, Aug 8, 2015 at 4:12 PM, Yoel Jacobsen <[email protected]> > wrote: > > I tried to follow Dan Baronet's "A tool of thought" in the latest Vector > > (26, 2&3). It's about solving Kankuro puzzles: > > > > Find all sets of N unique positive single digit numbers (1..9) making the > > sum S. > > > > I tried from scratch with J: > > > > sol =: dyad define > > > > p =. (i.!9) A. >: i. 9 > > > > c =. ~. /:~"1 (x {."1 p) > > > > k =. (+/"1 c) = y > > > > k # c > > > > ) > > > > > > so: > > > > 4 sol 12 > > > > 1 2 3 6 > > > > 1 2 4 5 > > > > > > Clearly it's an efficient brute force algorithm. I wonder what would be > the > > next optimization direction? > > > > > > A simple one would be using the first !8 x (10 - x) permutations, but for > > smaller values of x (such as 4 in the example above), the saving isn't > big > > enough. > > > > > > Currently I explore calculating which permutations I actually need. I > > figured its related to !(9-x). For instance, the first (of 126) indexes > for > > x = 4 are: > > > > > > 0 120 240 360 480 600 840 960 1080 1200 1320 1680 1800 1920 2040 2520 > 2640 > > 2760 3360 3480 4200 5880 6000 6120 6240 6360 6720 ... > > > > > > The distances are: > > > > 0 120 120 120 120 120 240 120 120 120 120 360 120 120 120 480 120 120 600 > > 120 720 1680 120 120 120 120 360 120 120 120 480 120 120 600 120 720 2520 > > 120 120 120 480 120 120 600 120 720 3360 120 120 600 120 720 4200 120 720 > > 5040 16800 ... > > > > > > I couldn't get the pattern yet, or the reason. > > > > . > > > > Ideas? > > > > > > Yoel > > ---------------------------------------------------------------------- > > 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
