我正在构建一个问答应用程序,该应用程序从问题池中随机提取问题。但是,有一个要求,即问题池仅限于用户尚未看到的问题。如果用户已经看过所有问题,则算法应“重置”,仅显示用户已经看过一次的问题。也就是说,始终向用户展示他们从未见过的问题,或者如果他们已经看过所有问题,则始终向他们展示他们更少见的问题,然后才是他们看过更多次数的问题。
列表(L)的创建方式如下:列表(I)中的任何值可能存在一次或在列表中多次重复出现。让我们定义列表中的另一个值J,使其不同于I。那么,0 <= abs(frequency(I) - frequency(J)) <= 1将始终为真。
换句话说:如果一个值在列表中重复5次,并且5次是列表中任何值重复的最大次数,则列表中的所有值都将重复4次或5次。算法应该在返回任何frequency == 5的值之前返回列表中所有frequency == 4的值。
抱歉这么冗长,我很难简洁地定义这个问题。请随时留下评论,如果需要进一步说明,我会进一步澄清。
非常感谢您提供的任何帮助。
澄清:
感谢迄今为止提出的答案。我认为它们都还不够。让我进一步解释。
我没有与用户进行交互并问他们问题。我正在将问题ID分配给考试记录,以便当用户开始考试时,确定他们可以访问的问题列表。因此,我有两个数据结构要处理:
1. 用户可以访问的可能问题ID列表 2. 此用户以前被分配过的所有问题ID的列表。这就是上面描述的列表L。
因此,除非我弄错了,否则解决此问题的算法/解决方案将需要使用上述两个列表进行列表和/或集合操作。
结果将是一个问题ID列表,我可以将其与考试记录相关联,然后插入到数据库中。
列表(L)的创建方式如下:列表(I)中的任何值可能存在一次或在列表中多次重复出现。让我们定义列表中的另一个值J,使其不同于I。那么,0 <= abs(frequency(I) - frequency(J)) <= 1将始终为真。
换句话说:如果一个值在列表中重复5次,并且5次是列表中任何值重复的最大次数,则列表中的所有值都将重复4次或5次。算法应该在返回任何frequency == 5的值之前返回列表中所有frequency == 4的值。
抱歉这么冗长,我很难简洁地定义这个问题。请随时留下评论,如果需要进一步说明,我会进一步澄清。
非常感谢您提供的任何帮助。
澄清:
感谢迄今为止提出的答案。我认为它们都还不够。让我进一步解释。
我没有与用户进行交互并问他们问题。我正在将问题ID分配给考试记录,以便当用户开始考试时,确定他们可以访问的问题列表。因此,我有两个数据结构要处理:
1. 用户可以访问的可能问题ID列表 2. 此用户以前被分配过的所有问题ID的列表。这就是上面描述的列表L。
因此,除非我弄错了,否则解决此问题的算法/解决方案将需要使用上述两个列表进行列表和/或集合操作。
结果将是一个问题ID列表,我可以将其与考试记录相关联,然后插入到数据库中。