为了对日历的每一行进行颜色编码,我希望能够使用字段 userid 创建一个从 1 到 9 的唯一整数。我需要使用日历另一部分的颜色来显示分配给教师的学生。
请记住,用户 ID 可以是任意长度。
起初我想使用最低有效数字,但这不适用于用户 ID 01、21、22 等。
然后我想把左边加到右边,例如userID 22 = 2+2=4,但这也行不通。
有什么想法可以根据用户 ID 创建一个唯一的 0-9 整数吗?
如果 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)
如果大于您的最大颜色数,您可以跳出循环。