Ok, thanks - with these additional definitions, your f works for me.

Thanks,

-- 
Raul


On Sun, Sep 17, 2017 at 10:05 AM, Erling Hellenäs
<erl...@erlinghellenas.se> wrote:
> Hi Raul !
>
> This is what happens when I run it in a clean JQT. I added a timespecex
> call. Not sure what might happen for you.
>
> Cheers,
> Erling
>
> Prime=: [: -. [: +./0 = [ | ]
>
> (,2) Prime 3
>
> 1
>
> NB. 1
>
> 2 3 Prime 4
>
> 0
>
> NB. 0
>
> 2 3 Prime 5
>
> 1
>
> NB. 1
>
> 2 3 5 Prime 6
>
> 0
>
> NB. 0
>
> PrimesUntil=: 3 : 0
>
> primes=.i.0
>
> n=. 2 + i. y - 1
>
> for_i. n do.
>
> primes=.primes,(primes Prime i) # i
>
> end.
>
> primes
>
> )
>
> PrimesUntil 5
>
> 2 3 5
>
> NB. 2 3 5
>
> PrimesUntil 10
>
> 2 3 5 7
>
> NB. 2 3 5 7
>
> PrimesUntil 11
>
> 2 3 5 7 11
>
> NB. 2 3 5 7 11
>
> PrimesInRange=: 4 : 0
>
> n=. PrimesUntil y
>
> (n >: x)# n
>
> )
>
> 7 PrimesInRange 11
>
> 7 11
>
> NB. 7 11
>
> 7 PrimesInRange 10
>
> 7
>
> NB. 7
>
> 8 PrimesInRange 10
>
>
> NB. i.0
>
> AddStartRangeIfNotThere=: (([ ~: 1 {. ]) # [) , ]
>
> 3 AddStartRangeIfNotThere 3 5 7 11
>
> 3 5 7 11
>
> NB. 3 5 7 11
>
> 8 AddStartRangeIfNotThere i.0
>
> 8
>
> NB. 8
>
> AddEndRangeIfNotThere=: ] , ([ ~: _1 {. ]) # [
>
> 11 AddEndRangeIfNotThere 3 5 7 11
>
> 3 5 7 11
>
> NB. 3 5 7 11
>
> 10 AddEndRangeIfNotThere 8
>
> 8 10
>
> NB. 8 10
>
> SequenceLengths=: 1 + (1 }. ]) - _1 }. ]
>
> SequenceLengths 3 5 7 11
>
> 3 3 5
>
> NB.3 3 5
>
> SequenceLengths 8 10
>
> 3
>
> NB. 3
>
> FirstInLongestSequence=: '' $ (([ = [: >./ [) , 0:) # ]
>
> 3 3 5 FirstInLongestSequence 3 5 7 11
>
> 7
>
> NB. 7
>
> 3 FirstInLongestSequence 8 10
>
> 8
>
> NB. 8
>
> SequenceIndices=: ] + [: i. [: >./ [
>
> 3 3 5 SequenceIndices 7
>
> 7 8 9 10 11
>
> NB. 7 8 9 10 11
>
> (,3) SequenceIndices 8
>
> 8 9 10
>
> NB. 8 9 10
>
> DropFirstIfPrime=: ((1 {. ]) e. [) }. ]
>
> 7 11 DropFirstIfPrime 7 8 9 10 11
>
> 8 9 10 11
>
> NB. 8 9 10 11
>
> (i.0) DropFirstIfPrime 8 9 10
>
> 8 9 10
>
> NB. 8 9 10
>
> DropLastIfPrime=: ([: -(_1 {. ]) e. [) }. ]
>
> (,11)DropLastIfPrime 8 9 10 11
>
> 8 9 10
>
> NB. 8 9 10
>
> (i.0)DropLastIfPrime 8 9 10
>
> 8 9 10
>
> f=: 4 : 0
>
> NB. Find the longest sequence of non-primes in a range
>
> NB. x and y are the range limits
>
> primesInRange =. x PrimesInRange y
>
> NB. Add range limits if they are not primes and then already there
>
> rangeLimits =. y AddEndRangeIfNotThere x AddStartRangeIfNotThere
> primesInRange
>
> NB. The lengths of the possible sequences, including both sequence limits
>
> sequenceLengths =. SequenceLengths rangeLimits
>
> NB. The first element of the longest sequence
>
> firstInLongestSequence=.sequenceLengths FirstInLongestSequence rangeLimits
>
> NB. The longest range including it's both limits
>
> longestRange =. sequenceLengths SequenceIndices firstInLongestSequence
>
> NB. Drop the range limits if they are primes
>
> primesInRange DropLastIfPrime primesInRange DropFirstIfPrime longestRange
>
> )
>
> s=: 10 f 100
>
> s
>
> 90 91 92 93 94 95 96
>
>>./90 91 92 93 94 95 96 = s
>
> 1
>
> s=: 1 f 2
>
>>./s = 1
>
> 1
>
> s=: 2 f 3
>
> 0 = $ s
>
> 1
>
> s=: 8 f 9
>
>>./s = 8 9
>
> 1
>
> s=: 7 f 8
>
>>./s = 8
>
> 1
>
> s=: 10 f 11
>
>>./s = 10
>
> 1
>
> s=: 7 f 11
>
>>./s = 8 9 10
>
> 1
>
> s=: 200 f 300
>
> s
>
> 212 213 214 215 216 217 218 219 220 221 222
>
>>./0 = 1 p: s
>
> 1
>
> 1 = 1 p: _1 + 1 {. s
>
> 1
>
> 1 = 1 p: 1 + _1 {. s
>
> 1
>
> s=: 2000 f 3000
>
> s
>
> 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986
> 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998
>
>>./0 = 1 p: s
>
> 1
>
> 1 = 1 p: _1 + 1 {. s
>
> 1
>
> 1 = 1 p: 1 + _1 {. s
>
> 1
>
> timespacex'200 f 300'
>
> 0.00132426 18816
>
>
> On 2017-09-17 15:35, Raul Miller wrote:
>>
>> I was going to look at 200 f 300 and then try timespacex between your
>> f and other implementations of f, but I got a value error on
>> AddStartRangeIfNotThere
>>
>> FYI,
>>
>
> ----------------------------------------------------------------------
> 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