JavaScript (Node.js), 8281 bytes
s=>s.map(c=>q*=(g=v=>p%v--?g(v):v?g(p++):p*p)(0)**'0s~|A``**'0s~|A()'.indexOf(c)*p,q=p=1)&&q
Input as array of characters, output a number.
Saved 1 byte by Shaggy.
JavaScript (Node.js), 8079 bytes
s=>s.map(c=>q*=(g=v=>p%v--?g(v):v?g(p++):p*p)(0)**'056``**'056 3421'[c%30%9]*p,q=p=1)&&q
Input an array of codepoints, output a number.
Saved 1 byte by Shaggy.
I believe someone may find out better hash functions.
JavaScript (Node.js), 82 bytes
s=>s.map(c=>q*=(g=v=>p%v--?g(v):v?g(p++):p*p)(0)**'0s~|A()'.indexOf(c)*p,q=p=1)&&q
Input as array of characters, output a number.
JavaScript (Node.js), 80 bytes
s=>s.map(c=>q*=(g=v=>p%v--?g(v):v?g(p++):p*p)(0)**'056 3421'[c%30%9]*p,q=p=1)&&q
Input an array of codepoints, output a number.
I believe someone may find out better hash functions.
JavaScript (Node.js), 81 bytes
s=>s.map(c=>q*=(g=v=>p%v--?g(v):v?g(p++):p*p)``**'0s~|A()'.indexOf(c)*p,q=p=1)&&q
Input as array of characters, output a number.
Saved 1 byte by Shaggy.
JavaScript (Node.js), 79 bytes
s=>s.map(c=>q*=(g=v=>p%v--?g(v):v?g(p++):p*p)``**'056 3421'[c%30%9]*p,q=p=1)&&q
Input an array of codepoints, output a number.
Saved 1 byte by Shaggy.
I believe someone may find out better hash functions.
JavaScript (Node.js), 82 bytes
s=>s.map(c=>q*=(g=v=>p%v--?g(v):v?g(p++):p*p)(0)**'0s~|A()'.indexOf(c)*p,q=p=1)&&q
Input as array of characters, output a number.
JavaScript (Node.js) , 80 bytes
s=>s.map(c=>q*=(g=v=>p%v--?g(v):v?g(p++):p*p)(0)**'056 3421'[c%30%9]*p,q=p=1)&&q
Input an array of codepoints, output a number.
I believe someone may find out better hash functions.
JavaScript (Node.js), 82 bytes
s=>s.map(c=>q*=(g=v=>p%v--?g(v):v?g(p++):p*p)(0)**'0s~|A()'.indexOf(c)*p,q=p=1)&&q
Input as array of characters, output a number.
JavaScript (Node.js), 82 bytes
s=>s.map(c=>q*=(g=v=>p%v--?g(v):v?g(p++):p*p)(0)**'0s~|A()'.indexOf(c)*p,q=p=1)&&q
Input as array of characters, output a number.
JavaScript (Node.js) , 80 bytes
s=>s.map(c=>q*=(g=v=>p%v--?g(v):v?g(p++):p*p)(0)**'056 3421'[c%30%9]*p,q=p=1)&&q
Input an array of codepoints, output a number.
I believe someone may find out better hash functions.
JavaScript (Node.js), 82 bytes
s=>s.map(c=>q*=(g=v=>p%v--?g(v):v?g(p++):p*p)(0)**'0s~|A()'.indexOf(c)*p,q=p=1)&&q
Input as array of characters, output a number.
JavaScript (Node.js), 82 bytes
s=>s.map(c=>q*=(g=v=>p%v--?g(v):v?g(p++):p*p)(0)**'0s~|A()'.indexOf(c)*p,q=p=1)&&q
JavaScript (Node.js), 82 bytes
s=>s.map(c=>q*=(g=v=>p%v--?g(v):v?g(p++):p*p)(0)**'0s~|A()'.indexOf(c)*p,q=p=1)&&q
Input as array of characters, output a number.