In http://www.jsoftware.com/pipermail/programming/2007-August/007819.html I presented a more efficient verb than 'comb' http://www.jsoftware.com/help/dictionary/cfor.htm to determine all combinations. In Hui's essay http://www.jsoftware.com/jwiki/Essays/Combinations it was used to describe comb1 (without mentioning the origin).
Scott pointed me to http://www.jsoftware.com/pipermail/programming/2007-February/005123.html , which led me to another idea on combinations, called 'comb3'. rnk 5 ts&>'10 comb 20';'10 comb1 20';'10 comb3 20' 2 1.27 1.20 1 1.03 1.24 0 1.00 1.00 So comb3 is 3% faster and 24% leaner than comb1. (10 comb1 20) -: 10 comb3 20 1 comb3=: [:; [:(,.&.><@;\.)/ >:@[EMAIL PROTECTED] (Perhaps a candidate for a Jem http://www.jsoftware.com/jwiki/DanBron#works_intended ) With a slight modification (of the starting items), comb3 can be used to generate combinations with non-unique elements: comb3a=: [:; [:(,.&.><@;\.)/ (($,:)i.) 2 comb3a 3 0 0 0 1 0 2 1 1 1 2 2 2 Notice that x=0 gives a domain error in both cases, but this can easily be repaired (by ([EMAIL PROTECTED]:)`comb3 @.([EMAIL PROTECTED]) ). R.E. Boss ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
