我在理解这个蛮力方法时遇到了一些麻烦。我使用Perl来提取问题和他们的选择。现在所有的问题都存储在一个数组中。我不确定如何处理答案。如何使用暴力解决和存储解决方案的选择题?
我应该如何保存答案,并组织我的代码,以便它类似于这样......
选择问题的第一选择。 (所以通过一个,所有的问题都应该有选项A)。
提交以检查正确的答案。
解析答案,如果给定的答案是正确的,那么标记为“正确”的答案,并忘记试图为该问题选择任何其他选择。
否则,请在下一个通行证中继续通过该问题的答案列表。
所以下一次会选择对这个问题的第二个答案,直到多次提交它通过蛮力找到所有的“正确”的答案后。
我遇到了麻烦,如何存储答案并将它们与问题相关联,如果它们错误或将其标记为“找到”,则将它们交叉关闭。
我在想使用散列。请让我知道我应该如何构建代码的任何建议。
谢谢!
编辑
样本数据 -
所以我使用的是HASH方法......我的哈希看起来是这样的:
打印出来的哈希:
question_123 => a,b,c,d
question_155 => a,b,c
question_234 => T,F
现在我必须找到一种方法来检查每个选项,直到找到正确答案为止。
编辑
为了澄清出头让我们假设有10个问题的池。用户点击“开始练习”,该练习从10个池中生成4个随机问题。因此,在这个当前状态下,我有四个问题与他们的答案。我通过并将这些问题及其答案添加到数据结构(从下面的一个或使用文件存储它们)。接下来我要选择一个答案。然后用户必须提交这些问题以供审查。一旦提交按钮被击中,提示说如果问题x是正确的或不正确的。基于此,数据结构必须更新哪个是该问题的正确答案。
现在要冲洗并重复。这次又从同一个池中生成另外四组随机问题。这一次发现了两个新问题,因此必须将这些问题添加到数据结构中。应该使用类似的逻辑来找到答案。此外,每个答案选项(选择)始终都有一个唯一的数字值,因此我的服务器可以使用该值检查答案ID。在我的服务器端,每个问题都只有一个ID,它与正确的答案相关。使用我的桌子将会破坏这个实验的目的。
视觉所发生的一切:
Pass One -- 4/10 Random Questions
1. Who is the US president?
21. Barrak
22. Chap
23. Jim
24. Nivea
2. How many states are there?
25. 99
26. 90
27. 51
3. What is the color of the sky?
28. blue
29. black
30. none
4. Is time relative?
31. False
32. True
所以,在第一轮的选择应该是这样的:
1 => a - 21
2 => a - 99
3 => a - 28
4 => False - 31
点击提交按钮。服务器响应:
1. Correct
2. Incorrect
3. Correct
4. Incorrect
现在使用找到的正确答案更新数据结构。
程序现在在提示时请求新的一组问题。这次服务器返回:
Pass Two -- 4/10 Random Questions
4. Is time relative?
31. False
32. True
6. What is not a plant?
65. Cow
66. Rose
67. Tree
1. Who is the US president?
21. Barrack
22. Chap
23. Jim
24. Nivea
8. What is a programming language?
99. C++
100. Tylenol
101. Mr.Monster
看到了,现在在这个过程中出现了两个新问题。对于这些人,必须选择第一个选项,但对于重复的选项,除非已经找到正确的答案,否则应该选择下一个选项。
因此,这将被发送到服务器:
4. Correct
6. Correct
1. Correct
8. Correct
同样处理与回应:
4. True - 32
6. Cow - 65
1. Barrack - 21
8. C++ - 99
服务器响应。希望这真的可以解决问题。还要注意,每个答案都会附带一个唯一的数字值。
到目前为止,我有了所有的问题一个数组。我正在考虑为该数组的每个元素创建一个新数组来存储问题,但是这不仅仅是使用散列? – user791953
如果你使用散列,它将是一个散列。如果没有真正了解更多关于您的数据的信息,很难说出最好的。示例输入? – TLP
好的我将使用编辑。 – user791953