# Sets

Operators and functions for working with an array of boolean values (set type) are described here.

## Operators

 Operator Result Description * set int Returns the set size. ^ set set Returns a new set as logical NOT of the source set. !s[i] for each item. set = set set Assignment operator. set &= set set Create a clone of the set. The new variable will work with the same data set. set += set set Appends a set to a set variable. set & set set Returns a set that is the intersection of two sets. left[i] && right[i] for each item. set | set set Returns a set that is the union of two sets. left[i] || right[i] for each item. set [ int ] bool Sets/gets a set value.

## Functions

### arr(set s) arr.int

The arr function converts a set value to an array of integers that contains indexes of set items.

### set(str s) set

The set function converts a string to a set value and returns it. The string must only have 1 and 0 characters.

### set(arr.int a) set

The set function converts an array of integers to a set value and returns it. The result set will have items with corresponding indexes.

``````run arr.int {
set s &= {780, 99, 128, 105, 136}
arr.int as = arr(s)
as += 330
s &= set(as)
return arr(s) // [99 105 128 136 330 780]
}``````

### str(set s) str

The str function converts a set value to a string and returns it. The result string contains only 1 and 0.

### Set(set s, int index) set

The Set function adds an index item to the set. It is the same as s[index] = true. The function returns s.

### Toggle(set s, int index) bool

The Toggle function adds an index item to the set if the set doesn't have it and otherwise, the function removes the item. It is the same as s[index] = !s[index]. The function returns the previous state - true if the item existed and, otherwise, false.

### UnSet(set s, int index) set

The UnSet function removes an index item from the set. It is the same as s[index] = false. The function returns s.

Last updated