I suggest you use larger numbers for your performance tests.

   (10#.(#~(-:~.)"1) >: 9#.inv i. 9^6)-: 10 #.(,/@:(],"1 0 -."1)^:5 ,.)>:i.9
1
   ts'10#.(#~(-:~.)"1) >: 9#.inv i. 9^6'
0.39192919 1.7905766e8
   ts'10 #.(,/@:(],"1 0 -."1)^:5 ,.)>:i.9'
0.010126433 9442816

The Groeneveld solution is more efficient by a factor of approx. 700 (38 * 19).
Apart from being the most elegant.


R.E. Boss


> -----Original Message-----
> From: Programming [mailto:programming-boun...@forums.jsoftware.com]
> On Behalf Of 'Mike Day' via Programming
> Sent: maandag 14 augustus 2017 22:01
> To: programm...@jsoftware.com
> Subject: Re: [Jprogramming] Quora problem
> 
> Yes,  much better!
> 
> cf my suggestion a few days ago,  and another constructive one using tap and
> comb,  q_tap_comb :
> 
> ... time & space for Skip's original problem:
>      ts'10 #.(,/@:(],"1 0 -."1)^:2 ,.)>:i.9'NB. AG
> 0.000120949 40448
> 
>      ts'10#.(#~(-:~.)"1) >: 9#.inv i. 9^3'   NB. MD
> 0.000774292 84608
> 
>      ts'q_tap_comb 3'           NB. constructive,  eg RM
> 0.00130777 39424
> 
> ... generating required numbers in [12345, 98765]:
>     ts'10 #.(,/@:(],"1 0 -."1)^:4 ,.)>:i.9'
> 0.00548052 2.23386e6
> 
>     ts'10#.(#~(-:~.)"1) >: 9#.inv i. 9^5'
> 0.066979 5.91731e6
> 
>     ts'q_tap_comb 5'
> 0.0397513 2.11584e6
> 
> where
>     q_tap_comb =: tap @[ ,@(10 #."1 {&.:|:) >:@comb&9 f.
> ie
>     q_tap_comb
> (i.@! A. i.)@[ ,@(10 #."1 {&.:|:) >:@(4 : 0)&9
> 
> k=. i.>:d=.y-x
> 
> z=. (d$<i.0 0),<i.1 0
> 
> for. i.x do. z=. k ,.&.> ,&.>/\. >:&.> z end.
> 
> ; z
> 
> )
> 
> 
> Thanks,
> Mike
> 
> 
> On 14/08/2017 18:16, Arie Groeneveld wrote:
> > My version of variations (without repetitions) :
> >
> > 10 #. (,/@:(],"1 0 -."1)^:2 ,.)1+i.9
> >
> > More general:
> >
> > (3) 4 :'y,/@:(],"1 0 -."1)^:(x-1) ,.y' 'abcd'
> >
> >
> > Op 12-08-17 om 11:16 schreef Skip Cave:
> >> How can I use J to generate all the possible 3-digit integers that
> >> can be constructed using the digits 1-9 (no zeros), with no repeated
> >> digits in each integer? The sequence starts with 123 (smallest) and
> >> goes to 987 (largest). Here's the first few integers in the sequence:
> >>
> >> 123 124 125 126 127 128 129 132 134 135 136 137 138 139 142 143 145
> >> 146 147
> >> 148 149 152 153 154 156 157 158 159 162......
> >>
> >> Skip
> >>
> >> Skip Cave
> >> Cave Consulting LLC
> >> ---------------------------------------------------------------------
> >> - For information about J forums see
> >> http://www.jsoftware.com/forums.htm
> >
> > ----------------------------------------------------------------------
> > For information about J forums see
> http://www.jsoftware.com/forums.htm
> 
> 
> 
> ---
> This email has been checked for viruses by Avast antivirus software.
> https://www.avast.com/antivirus
> ----------------------------------------------------------------------
> 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