Also note that this will test whether numbers are in a half-open interval, that is, exclusive on the left and inclusive on the right (so 10 < x <= 100 in your example). If you want an exclusive interval like your solution tests for, you will need to subtract 0 1 from the left argument.
Marshall On Sun, Sep 24, 2017 at 09:14:28AM +0100, Marshall Lochbaum wrote: > Try > > rng =: ] #~ 1=I. > > it's about half as fast because I. is not very well-optimized. > > Marshall > > On Sun, Sep 24, 2017 at 02:29:31AM -0500, Skip Cave wrote: > > Here's a function I came up with to select numbers in a vector which are > > within some range. > > > > Find all the numbers between 10 & 100 in a set of random numbers from 0 to > > 200: > > > > > > rng =. 4 : '((({.x)</y)*.(({:x)>/y))#y' > > > > > > 10 100 rng ?50$200 > > > > 89 91 32 85 84 27 31 20 28 66 96 93 22 85 39 97 82 35 90 67 34 35 67 95 50 > > > > > > Between 120 & 180: > > > > > > 120 180 rng ?50$200 > > > > 148 163 133 165 150 178 121 146 161 179 > > > > > > Is there a more concise/efficient way to select numbers in a range? > > > > 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