National Public Mania

    rotated-array-set
    TypeScript icon, indicating that this package has built-in type declarations

    2.0.0 • Public • Published

    npm version downloads build status coverage status Language grade: JavaScript 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.

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

    Install

    npm i rotated-array-set

    DownloadsWeekly Downloads

    4,958

    Version

    2.0.0

    License

    MIT

    Unpacked Size

    8.81 kB

    Total Files

    5

    Last publish

    Collaborators

    • grantila