Anagram hash table.
$ npm install compute-anagram-hashFor use in the browser, use browserify.
varcreateHash=require('compute-anagram-hash');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...
Add strings to the anagram hash table.
hash.push('dog','rad','super');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 nullIf 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.
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.
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',...]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']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']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.jsUnit tests use the Mocha test framework with Chai assertions. To run the tests, execute the following command in the top-level application directory:
$ make testAll new feature development should have corresponding unit tests to validate correct functionality.
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-covIstanbul creates a ./reports/coverage directory. To access an HTML version of the report,
$ make view-covCopyright © 2015. Athan Reines.