Skip to content

Instantly share code, notes, and snippets.

@isRuslan
Created October 7, 2014 09:37
Show Gist options
  • Save isRuslan/5cfc8b425a17a83394f8 to your computer and use it in GitHub Desktop.
Save isRuslan/5cfc8b425a17a83394f8 to your computer and use it in GitHub Desktop.
Trello developer task
#!/usr/bin/node
/**
* Trello task description: https://trello.com/jobs/developer
*/
/**
* @function hash Create hash from string
* @param {String} str String to hash
* @return {Number} hash
*/
function hash (str) {
var h = 7;
var letters = "acdegilmnoprstuw";
for (var i = 0; i < str.length; i++) {
h = (h * 37 + letters.indexOf( str[i] ));
}
return h;
}
/**
* @function deHash Get string from hash
* @param {Number} hash Hash to string
* @param {Number} L Lenght of string
* @return {String} string
*/
function deHash (hash, L) {
var letters = "acdegilmnoprstuw";
var str = '';
var hashList = [];
var index = null;
for (var i = 0; i < L; i++) {
hashList.push(parseInt(hash));
hash = hash/37;
}
for (var j = hashList.length-1; j >= 0; j--) {
if (j !== L-1) {
index = hashList[j] - hashList[j+1]*37;
} else {
index = hashList[j] - 7*37;
}
str += letters[index];
}
return str;
}
var hash7 = hash('leepadg');
var deHash7 = deHash(hash7, 7);
console.assert('leepadg' == deHash7, 'Hashing `leepadg` failed');
console.log( 'Test `leepadg` ok' );
var deHash9 = deHash(956446786872726, 9);
var hash9 = hash(deHash9);
console.assert(956446786872726 == hash9, 'Deashing `956446786872726` failed');
console.log( 'Test `956446786872726` ok\n' );
console.log( 'Answer: %s', deHash9 );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment