No one has mentioned the simple function 
load 'stats/base'
steps 5 19 14
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
steps 5 9 8
5 5.5 6 6.5 7 7.5 8 8.5 9
steps _3 10 13
_3 _2 _1 0 1 2 3 4 5 6 7 8 9 10
steps 4.25 8.75 9
4.25 4.75 5.25 5.75 6.25 6.75 7.25 7.75 8.25 8.75
steps 9 4 5
9 8 7 6 5 4
Also useful for a wide variety of other cases


Sent from Mail for Windows 10

From: Don Kelly
Sent: Thursday, April 2, 2020 10:27 AM
To: programm...@jsoftware.com
Subject: Re: [Jprogramming] generate integers from a to be with a step

I like this and find your approach to thru interesting  as it works both 
ways 5 thru 19 and 19 thru 5. A 'one way' approach could be this

thru2=. }. [:i.>:

5 thru2 19

5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

some time difference but no space difference

(100)6!:2 '5 thru2 200'

1.117e_6

(100)6!:2 '5 thru 200'

1.44e_6


reverse

|. 5 thru2 19

19 18 17 16 15 14 13 12 11 10 9 8 7 6 5


Don


On 2020-03-29 7:34 a.m., Raul Miller wrote:
> As your examples illustrate, this is something of an underspecified problem.
>
> But let's try a few things...
>
> First, there's your basic i. which gets us a sequence:
>     i.1+14
> 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
>
> And adding step 3 means taking fewer steps and making them longer
>     3*i.<.1+14%3
> 0 3 6 9 12
>
> And we can of course add our starting point back in:
>     5+3*i.<.1+14%3
> 5 8 11 14 17
>
> Meanwhile, without step, we can make a dyad to give us all integers in a 
> range:
>     thru=: <. + i.@(+ *)@-~
>     5 thru 19
> 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
>     19 thru 5
> 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5
>
> With step, what would this look like?
>     (#~ 0= 3|]) 5 thru 19
> 6 9 12 15 18
>     (#~ 0= 3|5-~]) 5 thru 19
> 5 8 11 14 17
>     (#~ 0= 3|19-~]) 5 thru 19
> 7 10 13 16 19
>
> Let's pick the second one (since it matches an example you gave) and
> parameterize that. Specifically, let's declare our arguments like
> this:
>     step stepThrough start,limit
>
> ('step', 'start' and 'limit' are all single integers here, and
> 'stepThrough' will be our verb)
>
> I can't see any non-verbose ways of making this tacit, so:
>
> stepThrough=:dyad define
>    'start diff'=. -/\ y
>    start-(*diff)*x*i.<.1+x%~|diff
> )
>
>     3 stepThrough 5 19
> 5 8 11 14 17
>     3 stepThrough 19 5
> 19 16 13 10 7
>
> Does the implementation seem a bit arbitrary? Well... it should. After
> all, we arbitrarily picked from one of several possible mechanisms
> which matched the description.
>
> But I hope this helps. (And, I hope email transport doesn't reformat
> what I've written.)
>
> Thanks,
>
----------------------------------------------------------------------
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