2014-11-06 64 views
-3

我有一个文本文件,其中包含超过11000个选择题和匹配问题。这些问题有不同的大小,除了有不同数量的给定选择。下面是从文本文件花了五年给出选择匹配问题的一个样本:

Type: MT
1) Can you match each of these cities to their location? Drag the cities on the right to match them with the locations on the left.
~ Correct. You got all these matches correct.
@ Incorrect. You got some of these wrong.
a. North = Turin
b. Center = Rome
c. South = Naples
d. Sicily = Palermo
e. Sardinia = Cagliari

在将该文件处理成HTML生成引擎之前,我需要对所有这些问题进行洗牌,即将文件中的每个问题的位置随机更改为,因此最终产品将变得无法预测。每个问题编号(如类型:)中提到的是不重要的。

我在link找到了一个Word vba代码,但它确实需要大量的专家更改以适应不同大小的问题。

随机选择多个选项的文本问题

对此问题的专家协助深表赞赏。提前致谢。

+1

读起来有点像“请为我写这篇文章”,尝试修改代码,然后在遇到特定问题时将代码发回* – 2014-11-06 17:06:31

回答

1

首先,我同意上面评论中的Tim Williams,这不完全是StackOverflow发布期望的特定级别。

这就是说,如果我是你,我会把这个问题分解成两个部分。

  • 首先判断是否有可用于识别构成“问题”的块的文本字符串。例如,如果每个问题都以“Type:”开头,那么您可以在文件中找到第一个实例,然后找到第二个实例,并且它们之间的所有内容都构成一个“问题”。然后,你可以把这个问题放在一个数组中。

  • 第二 - 随机化数组。有很多方法可以做到这一点。有人可能会使用0和两次问题数组长度之间的randrand函数,并为每个随机数切换问题。然后,重复相对于数组中项目总数的次数(例如,如果有100个问题,则执行125次“切换”以充分随机化输出,然后将数组打印回原始文件。

对于上面的方法,你需要一些分隔符的文件(我以为分隔符是“类型”)。突破的问题。如果这样的分隔符不存在,则可能需要一些更复杂的逻辑

+0

非常感谢您的Kusha答案使我向前迈进了一步解决方案。我也很感谢蒂姆的评论,但我并不是故意写给我的,而是一个需要思考的问题。一旦我找到正确的代码,我会将它发布给所有人。 – 2014-11-06 18:17:17

+0

没问题。还有一件事要考虑 - 如果你决定选择一个类似“Type:”的分隔符,请确保它足够具体,它不会出现在你的问题的文本中。如果发生这种情况,您最终可能会将一个问题分解为数组中的两个条目,这会使输出非常混乱。出于代码审查的目的,保存非随机数组的输出(在步骤1之后但在上面的步骤2之前)可能是明智的,以便您可以确保问题的解析按照设计工作。 – 2014-11-06 18:20:39