Package Exports
- rotated-array-set
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (rotated-array-set) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
rotated-array-set
RotatedArraySet is a class looking a bit like the built-in Set but is a set of arrays of T, and treats rotated arrays as "same".
API
Construct a RotatedArraySet, optionally provide a stringify method, converting T to string (this is not necessary for primitive types).
Example
import { RotatedArraySet } from 'rotated-array-set'
const tree = new RotatedArraySet< string >( );
tree.insert( [ 'a', 'b', 'c' ] );
tree.insert( [ 'x', 'y' ] );
tree.insert( [ 'c', 'a', 'b' ] ); // won't insert, already has this but rotated
tree.insert( [ 'y', 'x' ] ); // won't insert, same reason
tree.has( [ 'b', 'c', 'a' ] ); // true
tree.has( [ 'c', 'b', 'a' ] ); // false - this isn't *rotated*
tree.values( ); // [ [ 'a', 'b', 'c' ], [ 'x', 'y' ] ]Provide a custom stringifier:
import { RotatedArraySet } from 'rotated-array-set'
const tree = new RotatedArraySet< User >( user => `${user.first} ${user.last}` );
tree.insert( [ user1, user2, user3 ] );
tree.insert( [ user3, user1, user2 ] ); // won't insert, already has this but rotated
tree.has( [ user2, user3, user1 ] ); // true
tree.has( [ user3, user2, user1 ] ); // false - not *rotated*
tree.values( ); // [ [ user1, user2, user3 ] ]