Files
hello-algo/ru/codes/python/chapter_hashing/simple_hash.py
T
Yudong Jin 772183705e Add ru version (#1865)
* Add Russian docs site baseline

* Add Russian localized codebase

* Polish Russian code wording

* Update ru code translation.

* Update code translation and chapter covers.

* Fix pythontutor extraction.

* Add README and landing page.

* placeholder of profiles

* Use figures of English version

* Remove chapter paperbook
2026-03-28 04:24:07 +08:00

59 lines
1.3 KiB
Python

"""
File: simple_hash.py
Created Time: 2023-06-15
Author: krahets (krahets@163.com)
"""
def add_hash(key: str) -> int:
"""Аддитивное хеширование"""
hash = 0
modulus = 1000000007
for c in key:
hash += ord(c)
return hash % modulus
def mul_hash(key: str) -> int:
"""Мультипликативное хеширование"""
hash = 0
modulus = 1000000007
for c in key:
hash = 31 * hash + ord(c)
return hash % modulus
def xor_hash(key: str) -> int:
"""XOR-хеширование"""
hash = 0
modulus = 1000000007
for c in key:
hash ^= ord(c)
return hash % modulus
def rot_hash(key: str) -> int:
"""Хеширование с циклическим сдвигом"""
hash = 0
modulus = 1000000007
for c in key:
hash = (hash << 4) ^ (hash >> 28) ^ ord(c)
return hash % modulus
"""Driver Code"""
if __name__ == "__main__":
key = "Hello Algo"
hash = add_hash(key)
print(f"Хеш-сумма сложением = {hash}")
hash = mul_hash(key)
print(f"Хеш-сумма умножением = {hash}")
hash = xor_hash(key)
print(f"Хеш-сумма XOR = {hash}")
hash = rot_hash(key)
print(f"Хеш-сумма с циклическим сдвигом = {hash}")