【发布时间】:2018-06-19 04:48:18
【问题描述】:
我有 6 个变量 0 ≤ n₁,...,n₆ ≤ 12,我想构建一个哈希函数来执行直接映射 D(n₁,n₂,n₃,n₄,n₅,n₆) = S 和另一个函数来执行逆映射 I(S) = (n₁,n₂,n₃,n₄,n₅,n₆),其中 S 是一个字符串(az、AZ、 0-9)。
我的目标是将 S 的长度最小化为 3 或更少。
我以为变量有13个可能的值,一个字母(az)应该可以代表其中的2个,但我意识到1 + 12 = m和2 + 11 = m,所以我还是不知道怎么写一个函数。
有没有什么方法可以构建一个函数来完成这个映射并返回一个小字符串?
如果有必要,可以选择使用整个 ASCII 来表示 S。
【问题讨论】:
-
你能举个例子,比如 6 个数字的输入和它们的哈希 = $56 ...但我的问题是总是有 6 个数字存在吗?
-
12^6=144^3 > 125^3,你不能。也许我错了。
-
@zenwraight 你是对的,D(1,2,3,4,5,6) = X8% 可能
-
@Silencer 你能解释一下你是怎么想出这些数字的吗?
-
12^6(实际上我认为他的意思是 13^6)是输入变量的可能性数量,125^3 意味着不可能用 ASCII 的 125 个字符来表示这些可能性3 个字符