【发布时间】:2017-09-20 16:16:33
【问题描述】:
我有一个类似这样的方案函数,可以为给定的输入生成哈希值
(define hash
(lambda (c)
(cond
((null? c) 600)
(else
(reduce + (map (lambda (x) (cv x)) c) (* 12 (hash (cdr c))))))))
cv(x) 是每个字母映射到一个数字 a = 1、b = 2、c = 3 ... z = 26。
600 是基值。 12 是唯一的数字。
我的问题是我做错了,我的价值观有点偏离,找不到问题所在。
预期输出
(hash '(h i))
==> 86516
我的输出
(hash '(h i))
==> 86525
这就是我想要做的:
600 * 12 + 9(val for i) = 7209
那么,
7209 * 12 + 8(val for h) = 86516
你可以看到我的值有点偏离,我怀疑我是如何使用 reduce 函数的。
【问题讨论】:
标签: functional-programming scheme lisp racket