python - 创建一个哈希函数,将每个自然数映射到 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)
谢谢
解决方案
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)
推荐阅读
- javascript - 我们可以从 HTML 中获取 QR 码吗
- pharo - Pharo 的标准库中是否有不可变的数据结构,例如地图和集合?
- html - 如何在 HTML 文件中使用其他语言?
- sql - oracle substr 从字符直到字符
- graphql - Apollo:使用 info.mergeInfo.delegateToSchema 将 root 传递给解析器
- haskell - Haskell 用左箭头做(语法上)内联单子解包
- javascript - amCharts 中的实时图表完全刷新
- angular - 想要根据Angular中的条件加载父组件后访问子组件对象
- google-sheets-formula - 谷歌表格过滤公式的文本包含
- jenkins - 如何将声纳分析结果发送到 Jenkins 管道中的 gitlab 合并请求