Skip to content

Repository files navigation

Anagram Hash

NPM versionBuild StatusCoverage StatusDependencies

Anagram hash table.

Installation

$ npm install compute-anagram-hash

For use in the browser, use browserify.

Usage

varcreateHash=require('compute-anagram-hash');

createHash( [arr] )

Creates an anagram hash table.

varhash=createHash();

To initialize the hash table, provide a string array.

vararr=['beep','boop','bop','bap','foo','bar','cat','bat','moot','woot','moto','tab','pad','Shakespeare is awesome!'];varhash=createHash(arr);

The hash table has the following methods...

hash.push( str[, str,...,str] )

Add strings to the anagram hash table.

hash.push('dog','rad','super');

hash.get( [str[, key]] )

Returns a list of anagrams. If provided an input string, the method returns a list of corresponding anagrams from the hash table; otherwise, the method returns all anagram lists. If no anagrams exist, the method returns null.

// Get all anagrams:varlists=hash.get();// returns [['bat','tab'],['moot','moto']]// Get anagrams corresponding to a particular string:varlist=hash.get('moot');// returns ['moto']list=hash.get('beep');// returns null

If the input string is a hash key, set the key flag to true. When provided a hash key, the method returns all anagrams associated with a particular key (possibly including the key itself).

varlist=hash.get('abt',true);// returns ['bat','tab']list=hash.get('beep',true);// returns ['beep']

Note: when returning all anagram lists, the list order is not guaranteed.

hash.getKey( str )

Hashing function. Converts an input string to an alphagram.

varkey=hash.getKey('tab');// returns 'abt'varlist=hash.get(key,true);// returns ['bat','tab']

Note: the returned key only contains lowercase alphanumeric characters.

hash.keys( [opts] )

Returns a list of hash keys.

varkeys=hash.keys();// returns ['abp','abr','abt','act',...]

The method accepts the following options:

  • min: minimum number of anagrams.
  • max: maximum number of anagrams.

To return keys having at least a min number of anagrams, set the min option.

varkeys=hash.keys({'min': 2});// returns ['abt','moot']

To return keys having at most a max number of anagrams, set the max option.

varkeys=hash.keys({'max': 1});// returns ['abp','abr','act','adp',...]

hash.merge( hash1[, hash2,...,hashN] )

Merges anagram hash tables into the current anagram hash instance.

varmhash1,mhash2;mhash1=createHash(['yes','no']);mhash2=createHash(['beep','bepe']);hash.merge(mhash1,mhash2);varlist=hash.get('beep',true);// returns ['beep','bepe']

hash.copy( [keys] )

Copies an anagram hash table to a new hash table instance.

varcopy=hash.copy();varlist=copy.get('abt',true);// returns ['bat','tab']

To only copy specific keys to a new hash table, provide a keysarray.

varcopy=hash.copy(['beep']);varkeys=copy.keys();// returns ['beep']

Examples

varcreateHash=require('compute-anagram-hash');// Load a string array containing tokenized words:varwords=require('./words.json');// Create a new hash:varhash=createHash(words);// Get all anagram lists:varlists=hash.get();// Get a single anagram list:varlist=hash.get('rome');

To run the example code from the top-level application directory,

$ node ./examples/index.js

Tests

Unit

Unit tests use the Mocha test framework with Chai assertions. To run the tests, execute the following command in the top-level application directory:

$ make test

All new feature development should have corresponding unit tests to validate correct functionality.

Test Coverage

This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:

$ make test-cov

Istanbul creates a ./reports/coverage directory. To access an HTML version of the report,

$ make view-cov

License

MIT license.

Copyright

Copyright © 2015. Athan Reines.

About

Anagram hash table.

Resources

Stars

4 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages