rotated-array-set
Set of (possibly rotated) arrays
Last updated 3 years ago by grantila .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install rotated-array-set 
SYNC missed versions from official npm registry.

npm version downloads build status coverage status Node.JS version

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).

Versions

  • Since v2 this is a pure ESM package, and requires Node.js >=12.20. It cannot be used from CommonJS.
  • Since v3 requires Node.js >= 14.13.1.

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 ] ]

Current Tags

  • 3.0.0                                ...           latest (3 years ago)

3 Versions

  • 3.0.0                                ...           3 years ago
  • 2.0.0                                ...           5 years ago
  • 1.0.0                                ...           5 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 1
Last Day 0
Last Week 1
Last Month 0
Dependencies (0)
None
Dev Dependencies (8)
Dependents (1)

Copyright 2013 - present © cnpmjs.org | Home |