0

为了对日历的每一行进行颜色编码,我希望能够使用字段 userid 创建一个从 1 到 9 的唯一整数。我需要使用日历另一部分的颜色来显示分配给教师的学生。

请记住,用户 ID 可以是任意长度。

起初我想使用最低有效数字,但这不适用于用户 ID 01、21、22 等。

然后我想把左边加到右边,例如userID 22 = 2+2=4,但这也行不通。

有什么想法可以根据用户 ID 创建一个唯一的 0-9 整数吗?

4

1 回答 1

4

如果 N 大于 9,任何从 [0..N] 到 [1..9] 的函数映射都会发生冲突,因此不存在唯一映射它们的方案。

在您的情况下,您可以做的只是检查用户 ID,如果您之前没有看到此用户 ID,则为其分配下一个免费号码。这是一个简单的 for 循环 + 一个数组。

伪代码:

colors = array()
for userid in userids_to_color:
    if userid not in colors:
        colors[count(colors)] = userid

然后,颜色是用户 ID 的映射索引(=颜色编号)。count(colors)如果大于您的最大颜色数,您可以跳出循环。

于 2012-04-10T11:43:50.357 回答