CoolFace
Datasetpublic

basant307/AI_Governance_Project

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes48downloads
hash.mjs102 linesDownload Raw Back to util
1export const DEFAULT_HASH_SEED = 9261;2const K = 65599; // 37 also works pretty well3export const DEFAULT_HASH_SEED_ALT = 5381;4 5export const hashIterableInts = function( iterator, seed = DEFAULT_HASH_SEED ){ // sdbm/string-hash6  let hash = seed;7  let entry;8 9  for( ;; ){10    entry = iterator.next();11 12    if( entry.done ){ break; }13 14    hash = ((hash * K) + entry.value) | 0;15  }16 17  return hash;18};19 20export const hashInt = function( num, seed = DEFAULT_HASH_SEED ){ // sdbm/string-hash21  return ((seed * K) + num) | 0;22};23 24export const hashIntAlt = function( num, seed = DEFAULT_HASH_SEED_ALT ){ // djb2/string-hash25  return ((seed << 5) + seed + num) | 0;26};27 28export const combineHashes = function(hash1, hash2){29  return hash1 * 0x200000 + hash2;30};31 32export const combineHashesArray = function(hashes){33  return hashes[0] * 0x200000 + hashes[1];34};35 36export const hashArrays = function(hashes1, hashes2){37  return [38    hashInt(hashes1[0], hashes2[0]),39    hashIntAlt(hashes1[1], hashes2[1])40  ];41};42 43export const hashIntsArray = function( ints, seed ){44  let entry = { value: 0, done: false };45  let i = 0;46  let length = ints.length;47 48  let iterator = {49    next(){50      if( i < length ){51        entry.value = ints[i++];52      } else {53        entry.done = true;54      }55 56      return entry;57    }58  };59 60  return hashIterableInts( iterator, seed );61};62 63export const hashString = function( str, seed ){64  let entry = { value: 0, done: false };65  let i = 0;66  let length = str.length;67 68  let iterator = {69    next(){70      if( i < length ){71        entry.value = str.charCodeAt(i++);72      } else {73        entry.done = true;74      }75 76      return entry;77    }78  };79 80  return hashIterableInts( iterator, seed );81};82 83export const hashStrings = function(){84  return hashStringsArray( arguments );85};86 87export const hashStringsArray = function( strs ){88  let hash;89 90  for( let i = 0; i < strs.length; i++ ){91    let str = strs[i];92 93    if( i === 0 ){94      hash = hashString( str );95    } else {96      hash = hashString( str, hash );97    }98  }99 100  return hash;101};102 
basant307/AI_Governance_Project · CoolFace