Sieve Container class for sieve lists 


Part of: miSCellaneous


Container for a list of ascending integers as 'points' or 'intervals' .


See also: Sieves and Psieve patterns, PSVunion, PSVunion_i, PSVunion_o, PSVunion_oi, PSVsect, PSVsect_i, PSVsect_o, PSVsect_oi, PSVsymdif, PSVsymdif_i, PSVsymdif_o, PSVsymdif_oi, PSVdif, PSVdif_i, PSVdif_o, PSVdif_oi, PSVop, PSVop_i, PSVop_o, PSVop_oi 



Creation / Class Methods


*newEmpty

Creates a new empty Sieve object.


*new (...data)

Creates a new Sieve object in mode 'points'.

data - A generator and an optional integer limit, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce zero and its positive multiples.

If no limit is passed, returned integers might go up to default limit 65536.


*new_i (...data)

Creates a new Sieve object in mode 'intervals'.

data - A generator and an optional integer limit, which is included when reached.

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce constant intervals.

If no limit is passed, integer intervals might be collected up to default summation limit of 65536.


*new_o (...data)

Creates a new Sieve object in mode 'points' with offset.

data - A generator, an integer offset and an optional integer limit, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce zero and its positive multiples.

If no limit is passed, returned integers might go up to default limit 65536.


*new_oi (...data)

Creates a new Sieve object in mode 'intervals' with offset.

data - A generator, an integer offset and an optional integer limit, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce constant intervals.

If no limit is passed, integer intervals might be collected up to default summation limit of 65536.


*union (...data)

Creates a new Sieve object in mode 'points', generated by the union of sets of integers.

data - Generators and an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce zero and its positive multiples.

If no limit is passed, returned integers might go up to default limit 65536.


*union_i (...data)

Creates a new Sieve object in mode 'intervals', generated by the union of sets of integers.

data - Generators and an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce constant intervals.

If no limit is passed, integer intervals might be collected up to default summation limit of 65536.


*union_o (...data)

Creates a new Sieve object in mode 'points' with offsets, generated by the union of sets of integers.

data - Alternating generators and integer offsets plus an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce zero and its positive multiples.

If no limit is passed, returned integers might go up to default limit 65536.


*union_oi (...data)

Creates a new Sieve object in mode 'intervals' with offsets, generated by the union of sets of integers.

data - Alternating generators and integer offsets plus an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce constant intervals.

If no limit is passed, integer intervals might be collected up to default summation limit of 65536.


*sect (...data)

Creates a new Sieve object in mode 'points', generated by the intersection of sets of integers.

data - Generators and an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce zero and its positive multiples.

If no limit is passed, returned integers might go up to default limit 65536.


*sect_i (...data)

Creates a new Sieve object in mode 'intervals', generated by the intersection of sets of integers.

data - Generators and an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce constant intervals.

If no limit is passed, integer intervals might be collected up to default summation limit of 65536.


*sect_o (...data)

Creates a new Sieve object in mode 'points' with offsets, generated by the intersection of sets of integers.

data - Alternating generators and integer offsets plus an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce zero and its positive multiples.

If no limit is passed, returned integers might go up to default limit 65536.


*sect_oi (...data)

Creates a new Sieve object in mode 'intervals' with offsets, generated by the intersection of sets of integers.

data - Alternating generators and integer offsets plus an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce constant intervals.

If no limit is passed, integer intervals might be collected up to default summation limit of 65536.


*symdif (...data)

Creates a new Sieve object in mode 'points', generated by the symmetrical difference of sets of integers.

data - Generators and an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce zero and its positive multiples.

If no limit is passed, returned integers might go up to default limit 65536.


*symdif_i (...data)

Creates a new Sieve object in mode 'intervals', generated by the symmetrical difference of sets of integers.

data - Generators and an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce constant intervals.

If no limit is passed, integer intervals might be collected up to default summation limit of 65536.


*symdif_o (...data)

Creates a new Sieve object in mode 'points' with offsets, generated by the symmetrical difference of sets integers.

data - Alternating generators and integer offsets plus an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce zero and its positive multiples.

If no limit is passed, returned integers might go up to default limit 65536.


*symdif_oi (...data)

Creates a new Sieve object in mode 'intervals' with offsets, generated by the symmetrical difference of sets of integers.

data - Alternating generators and integer offsets plus an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce constant intervals.

If no limit is passed, integer intervals might be collected up to default summation limit of 65536.


*dif (...data)

Creates a new Sieve object in mode 'points', generated by the difference of sets of integers.

data - Generators and an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce zero and its positive multiples.

If no limit is passed, returned integers might go up to default limit 65536.


*dif_i (...data)

Creates a new Sieve object in mode 'intervals', generated by the difference of sets of integers.

data - Generators and an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce constant intervals.

If no limit is passed, integer intervals might be collected up to default summation limit of 65536.


*dif_o (...data)

Creates a new Sieve object in mode 'points' with offsets, generated by the difference of sets of integers.

data - Alternating generators and integer offsets plus an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce zero and its positive multiples.

If no limit is passed, returned integers might go up to default limit 65536.


*dif_oi (...data)

Creates a new Sieve object in mode 'intervals' with offsets, generated by the difference of sets of integers.

data - Alternating generators and integer offsets plus an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce constant intervals.

If no limit is passed, integer intervals might be collected up to default summation limit of 65536.



Instance Methods


union (...data)

Creates a new Sieve object in mode 'points', generated by the union of the receiver and sets of integers.

data - Generators and an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce zero and its positive multiples.

If no limit is passed, returned integers might go up to default limit 65536.


| (...data)

Binary operator for instance method union

union_i (...data)

Creates a new Sieve object in mode 'intervals', generated by the union of the receiver and sets of integers.

data - Generators and an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce constant intervals.

If no limit is passed, integer intervals might be collected up to default summation limit of 65536.


|* (...data)

Binary operator for instance method union_i


union_o (...data)

Creates a new Sieve object in mode 'points' with offsets, generated by the union of the receiver and sets of integers.

data - Alternating integer offsets and generators plus an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce zero and its positive multiples.

If no limit is passed, returned integers might go up to default limit 65536.


union_oi (...data)

Creates a new Sieve object in mode 'intervals' with offsets, generated by the union of the receiver and sets of integers.

data - Alternating integer offsets and generators plus an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce constant intervals.

If no limit is passed, integer intervals might be collected up to default summation limit of 65536.


sect (...data)

Creates a new Sieve object in mode 'points', generated by the intersection of the receiver and sets of integers.

data - Generators and an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce zero and its positive multiples.

If no limit is passed, returned integers might go up to default limit 65536.


& (...data)

Binary operator for instance method sect

sect_i (...data)

Creates a new Sieve object in mode 'intervals', generated by the intersection of the receiver and sets of integers.

data - Generators and an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce constant intervals.

If no limit is passed, integer intervals might be collected up to default summation limit of 65536.


&* (...data)

Binary operator for instance method sect_i

sect_o (...data)

Creates a new Sieve object in mode 'points' with offsets, generated by the intersection of the receiver and sets of integers.

data - Alternating integer offsets and generators plus an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce zero and its positive multiples.

If no limit is passed, returned integers might go up to default limit 65536.


sect_oi (...data)

Creates a new Sieve object in mode 'intervals' with offsets, generated by the intersection of the receiver and sets of integers.

data - Alternating integer offsets and generators plus an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce constant intervals.

If no limit is passed, integer intervals might be collected up to default summation limit of 65536.


symdif (...data)

Creates a new Sieve object in mode 'points', generated by the symmetrical difference of the receiver and sets of integers.

data - Generators and an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce zero and its positive multiples.

If no limit is passed, returned integers might go up to default limit 65536.


-- (...data)

Binary operator for instance method symdif

symdif_i (...data)

Creates a new Sieve object in mode 'intervals', generated by the symmetrical difference of the receiver and sets of integers.

data - Generators and an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce constant intervals.

If no limit is passed, integer intervals might be collected up to default summation limit of 65536.


--* (...data)

Binary operator for instance method symdif_i

symdif_o (...data)

Creates a new Sieve object in mode 'points' with offsets, generated by the symmetrical difference of the receiver and sets of integers.

data - Alternating integer offsets and generators plus an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce zero and its positive multiples.

If no limit is passed, returned integers might go up to default limit 65536.


symdif_oi (...data)

Creates a new Sieve object in mode 'intervals' with offsets, generated by the symmetrical difference of the receiver and sets of integers.

data - Alternating integer offsets and generators plus an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce constant intervals.

If no limit is passed, integer intervals might be collected up to default summation limit of 65536.


dif (...data)

Creates a new Sieve object in mode 'points', generated by the difference of the receiver and sets of integers.

data - Generators and an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce zero and its positive multiples.

If no limit is passed, returned integers might go up to default limit 65536.


- (...data)

Binary operator for instance method dif

dif_i (...data)

Creates a new Sieve object in mode 'intervals', generated by the difference of the receiver and sets of integers.

data - Generators and an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce constant intervals.

If no limit is passed, integer intervals might be collected up to default summation limit of 65536.


-* (...data)

Binary operator for instance method dif

dif_o (...data)

Creates a new Sieve object in mode 'points' with offsets, generated by the difference of the receiver and sets of integers.

data - Alternating integer offsets and generators plus an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce zero and its positive multiples.

If no limit is passed, returned integers might go up to default limit 65536.


dif_oi (...data)

Creates a new Sieve object in mode 'intervals' with offsets, generated by the difference of the receiver and sets of integers.

data - Alternating integer offsets and generators plus an optional integer limit, wrapped into a Ref, which is included when reached. 

Allowed generators: Integers, Streams or Patterns producing intervals or Sieves itself.

Integers and Stream/Pattern output must be strictly positive. 

Integers as generators produce constant intervals.

If no limit is passed, integer intervals might be collected up to default summation limit of 65536.



plot 

Plot the Sieve's list.


size 

The Sieve's list size.


toPoints 

Convert the Sieve to mode 'points' and set first point to offset.

toIntervals 

Convert the Sieve to mode 'intervals' and set offset to first point.

shift (addOffset) 

Shift the Sieve's list by integer addOffset.

>> (addOffset) 

Binary operator for instance method shift.

shiftTo (targetOffset) 

Shift the Sieve's list to integer targetOffset.

>>! (targetOffset) 

Binary operator for instance method shiftTo.

shiftToZero 

Shift the Sieve's list to offset zero.

weakCopy 

Returns a new Sieve with same list object.

copy 

Returns a new Sieve with copied list object.


copyWith (seqCollection, withCheck)

Takes over mode and offset from receiver and passes an appropriate SequenceableCollection.

withCheck determines if seqCollection is checked according to mode.

withCheck defaults to true.


copyApplyTo (operator, withCheck)

Apply operator (Symbol of method or Function) to the Sieve's list and pass the result to a new 

Sieve with copied mode and offset.

withCheck determines if result of the operation is checked according to mode.

withCheck default to true.


== (that)

Equality check. Sieves of different mode are equal iff the lists resulting from conversion are equal.


segmentGreaterEqual (lo)

Returns a new Sieve of mode 'points' with Integers greater than or equal lo. 


>=! (lo)

Binary operator for segmentGreaterEqual


segmentGreater (lo)

Returns a new Sieve of mode 'points' with Integers greater than lo. 


>! (lo)

Binary operator for segmentGreater


segmentLessEqual (hi)

Returns a new Sieve of mode 'points' with Integers less than or equal hi. 


<=! (hi)

Binary operator for segmentLessEqual


segmentLess (hi)

Returns a new Sieve of mode 'points' with Integers less than hi. 


<! (hi)

Binary operator for segmentLess


segmentBetweenEqual (lo, hi)

Returns a new Sieve of mode 'points' with Integers greater than or equal lo and less than or equal hi. 

This method is more efficient than applying segmentGreaterEqual plus segmentLessEqual.


<>=! (bounds)

Binary operator for segmentBetweenEqual.

bounds must be an array with lo and hi.


segmentBetween (lo, hi)

Returns a new Sieve of mode 'points' with Integers greater than lo and less than hi. 

This method is more efficient than applying segmentGreater plus segmentLess.


<>! (bounds)

Binary operator for segmentBetween.

bounds must be an array with lo and hi.


checkSymmetricPeriods 

Checks the list of a Sieve for symmetric periods and returns an array [periods, symmetries, completions],

where periods is the clumped list of periods, symmetries a corresponding array of Symbols and

completions a corresponding array of Booleans, indicating if periods are complete.

periods can contains Symbols 'sym', 'asym', 'quasisym' and 'identic'. 

See Sieves and Psieve patterns for a characterisation of these types.

It is assumed that the receiver has a periodic list, changes between periodic and

aperiodic segments are not detected, so also aperiodic prefixes of periodic lists.

checkCharacteristicPeriod

Checks the first complete period based on the data returned by checkSymmetricPeriods.

It returns an array [characteristicPeriod, offset, oddEven, symmetry], where

characteristicPeriod denotes the first complete period, offset the index at which it starts

in the receiver's list, oddEven one of the Symbols 'odd' and 'even' and symmetry the 

symmetry type as in checkSymmetricPeriods.

plotCharacteristicPeriod

Plots the characteristic period returned by checkCharacteristicPeriod.

Examples



// instantiation with 'new'


Sieve.new(1000)


Sieve.new(4, 20)


Sieve.new_i(4, 20)


Sieve.new_o(4, 1, 20)


Sieve.new_oi(4, 1, 20)




// instantiation with union

// collecting multiples resp. shifted multiples

// limit must be wrapped into a Ref object


Sieve.union(4, 7, `20)


Sieve.union_i(4, 7, `20)


Sieve.union_o(4, 1, 7, -1, `20)


Sieve.union_oi(4, 1, 7, -1, `20)




// instantiation with intersection

// collecting least common multiples (lcms) resp. shifted lcms


Sieve.sect(4, 3, `30)


Sieve.sect_i(4, 3, `30)


Sieve.sect_o(4, -1, 3, 0, `30)


Sieve.sect_oi(4, -1, 3, 0, `30)




// instantiation with symmetrical difference

// equals union without intersection, thus multiples without lcms


Sieve.symdif(4, 3, `30)


Sieve.symdif_i(4, 3, `30)


Sieve.symdif_o(4, -1, 3, 0, `30)


Sieve.symdif_oi(4, -1, 3, 0, `30)



// all take more arguments


Sieve.union(4, 5, 7, `30)


Sieve.symdif(4, 5, 7, `30)




// difference is not symmetrical, but subtrahends can be swapped


Sieve.dif(4, 3, 7, `30)


Sieve.dif(3, 4, 7, `30)


Sieve.dif(3, 7, 4, `30)




// corresponding instance methods and its binary operators


a = Sieve(4, 30);


b = Sieve(3, 30);


a.union(b)


a|b


a.union_i(b)


a|*b



// here first arg is offset of receiver


a.union_o(0, b, 100)


a.union_oi(0, b, 100)



a.sect(8)


a & 8


a.sect_i(8)


a &* 8



a.sect_o(1, b, 5)


a.sect_oi(1, b, 5)



a.symdif(b)


a -- b


a.symdif_i(b)


a --* b



a.dif(b)


a - b


a.dif_i(b)


a -* b



// For conversion, segmentation and transformation examples see Sieves and Psieve patterns