function djb2gawk(str, n, i, hash, ascii) {
hash = 5381
n = length(str)
for(i = 1; i <= n; ++i) {
char = substr(str, i, 1)
ascii = alphanum(char)
hash = (hash * 33 + ascii) % ((2^32) - 1)
}
return hash
}
function alphanum(char) {
return index("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", char)
}
BEGIN {
str = "comp.lang.awk"
print djb2gawk(str)
}
ZnVuY3Rpb24gZGpiMmdhd2soc3RyLCAgICBuLCBpLCBoYXNoLCBhc2NpaSkgewoKICBoYXNoID0gNTM4MQogIG4gPSBsZW5ndGgoc3RyKQoKICBmb3IoaSA9IDE7IGkgPD0gbjsgKytpKSB7CiAgICBjaGFyID0gc3Vic3RyKHN0ciwgaSwgMSkKICAgIGFzY2lpID0gYWxwaGFudW0oY2hhcikKICAgIGhhc2ggPSAoaGFzaCAqIDMzICsgYXNjaWkpICUgKCgyXjMyKSAtIDEpCiAgfQoKICByZXR1cm4gaGFzaAp9CgpmdW5jdGlvbiBhbHBoYW51bShjaGFyKSB7CgogIHJldHVybiBpbmRleCgiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODkiLCBjaGFyKQp9CgpCRUdJTiB7CiAgc3RyID0gImNvbXAubGFuZy5hd2siCiAgcHJpbnQgZGpiMmdhd2soc3RyKQp9Cg==