The condition for one of the basis cases need to
be tighter to avoid incorrect results for 
ridiculous arguments, such as  40 isums 3 .  Thus:

isums=: 4 : 0
 if.     0>:y do. i.0 0
 elseif. 1= y do. x $~ ((0<x)*.x<:9),1
 elseif. 1    do. 
  j=. 1+i.9
  ((-: ~.)"1 # ]) ; j ,.&.> (x-j) isums&.> y-1
 end.
)



----- Original Message -----
From: Roger Hui <[EMAIL PROTECTED]>
Date: Friday, July 28, 2006 8:34 am
Subject: Re: [Jprogramming] Diagonal generalization

> isums=: 4 : 0
> if.     0>:y do. i.0 0
> elseif. 1= y do. x $~ (0<x),1
> elseif. 1    do. 
>  j=. 1+i.9
>  ((-: ~.)"1 # ]) ; j ,.&.> (x-j) isums&.> y-1
> end.
> )
> 
>   5 isums 3
>   $5 isums 3
> 0 3
>   6 isums 3
> 1 2 3
> 1 3 2
> 2 1 3
> 2 3 1
> 3 1 2
> 3 2 1
>   7 isums 3
> 1 2 4
> 1 4 2
> 2 1 4
> 2 4 1
> 4 1 2
> 4 2 1
> 
> I am not sure that this is a good way to solve
> Kakuro puzzles.
> 
> 
> 
> ----- Original Message -----
> From: JC Coez <[EMAIL PROTECTED]>
> Date: Friday, July 28, 2006 7:26 am
> Subject: Re: [Jprogramming] Diagonal generalization
> 
> > 
> > 
> > > Perhaps you might like to refine your question.  The indicies 
> of 
> > each 
> > > element are generated by
> > >
> > > ind =: $ #: [: i. [:*/$
> > >
> > To refine my question : given an integer X and a number n, I 
> would 
> > like to 
> > find all combinations of n different integers from 1 to 9 for 
> > which the sum 
> > is  N. Just like in the kakuro puzzle.


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

Reply via email to