首页 > 解决方案 > 创建一个哈希函数,将每个自然数映射到 9 个桶之一

问题描述

创建一个哈希函数,将每个自然数映射到 9 个桶 {1, 2, ..., 9} 之一。同时,将大于 9 的数字中的所有数字相加,直到只剩下一个数字(例如,128 变为 11,变为 2) 为数字 1:1000 填充每个桶

目前有:

x = 0
buckets = {}
buckets = {1:0, 2:0, 3:0, 4:0, 5:0, 6:0, 7:0, 8:0, 9:0}
while x in range(11):
    x += 1
    j = x
    while j > 9:
        x = sum(int(digit) for digit in str(x))
    if x in buckets:
        buckets[x] += 1
for keys,values in buckets.items():
    print(keys)
    print(values)

谢谢

标签: python

解决方案


x = 1
buckets = {}
buckets = {'1':0, '2':0, '3':0, '4':0, '5':0, '6':0, '7':0, '8':0, '9':0}
while x < 20:
    j = x
    while j > 9:
        j = sum(int(digit) for digit in str(x))
    if str(j) in buckets:
        buckets[str(j)] += 1
    x += 1
print(buckets)

推荐阅读