J'ai une fonction de système comme de sorte que génère une valeur de hachage pour une entréeScheme réduire la difficulté
(define hash
(lambda (c)
(cond
((null? c) 600)
(else
(reduce + (map (lambda (x) (cv x)) c) (* 12 (hash (cdr c))))))))
cv(x)
donné est où chaque cartes de lettre à un certain nombre a = 1, b = 2, c = 3. .. z = 26.
600 est la valeur de base. 12 est un nombre unique. Mon problème est que je fais quelque chose de mal que mes valeurs sont un peu hors et ne peuvent pas trouver où le problème repose.
attendu Sortie
(hash '(h i))
==> 86516
Ma sortie
(hash '(h i))
==> 86525
C'est ce que je suis en train de faire:
600 * 12 + 9(val for i) = 7209
puis,
7209 * 12 + 8(val for h) = 86516
Comme vous pouvez le voir, mes valeurs sont un peu faussées, je soupçonne que j'utilise la fonction de réduction.
merci cela m'a aidé à résoudre mon problème! –