A RingList
is a list of distinct values that is
unchanged by rotation. These can be created by giving a list of values
or a one-dimensional array of values:
julia> using RingLists
julia> a = RingList(1,2,3,4);
julia> b = RingList([2,3,4,1]);
julia> a==b
true
julia> println(a)
[ 1 → 2 → 3 → 4 → 1 ]
Note the repeat of element 1
in the output showing that the list wraps around.
In this list, a
stands for a RingList
.
length(a)
gives the number of elements held in the RingList
.keys(a)
returns an iterator of the elements in a
.haskey(a,x)
checks if x
is an element of the RingList
.Vector(a)
returns a one-dimensional array of
the elements in a
.Set(a)
returns the elements of a
(as an unordered collection).collect(a)
returns the elements of a
in an ordered list. copy(a)
makes an independent copy of a
.shuffle(a)
returns a new RingList
with the same elements as a
but
in randomized order.next(a,x)
returns the next element after x
in a
; also a[x]
.previous(a,x)
returns the element y
with a[y]==x
; also a(y)
.first(a)
returns an element of a
that is, if possible, the smallest element of a
. Call first(a,false)
to ignore trying to start at the smallest element. Fails if a
is empty.delete!(a,x)
removes x
from the collection linking together its
predecessor and successor.insert!(a,x)
inserts the element a
into the RingList
. No guarantee where it will end up.insertbefore!(a,x,y)
inserts x
into a
before y
.insertafter!(a,x,y)
inserts x
into a
after y
. For example:
```
julia> a = RingList(1,2,3)
[ 1 → 2 → 3 → 1 ]julia> insertafter!(a,99,2)
julia> a [ 1 → 2 → 99 → 3 → 1 ]
* `reverse(a)` returns a new `RingList` with the elements reversed.
julia> a = RingList(1,2,3,4,5) [ 1 → 2 → 3 → 4 → 5 → 1 ]
julia> b = reverse(a) [ 1 → 5 → 4 → 3 → 2 → 1 ]
## Iteration
`RingList` elements can be iterated:
julia> a = RingList(1,2,3,4,5) [ 1 → 2 → 3 → 4 → 5 → 1 ]
julia> for x in a println(x) end 1 2 3 4 5
08/28/2018
4 months ago
38 commits