У меня возникли проблемы с пониманием этого подхода грубой силы. Я использую Perl для извлечения вопросов и их выбора. Все вопросы сейчас хранятся в массиве. Я не уверен, что делать с ответами.
Как мне хранить ответы и систематизировать мой код, чтобы он делал что-то похожее на это ...
Выберите первый вариант для вопроса. (Итак, передайте один, для всех вопросов должен быть выбран вариант А).
Подтвердите, чтобы проверить правильность ответов.
Разберите ответы, если данный ответ был правильным, отметьте это как "правильный" ответ и забудьте попытаться выбрать любой другой вариант ответа на этот вопрос.
В противном случае продолжите список ответов на этот вопрос на следующем проходе.
Таким образом, следующий проход выберет второй ответ на этот вопрос, пока после нескольких отправок не найдет все «правильные» ответы с помощью грубой силы.
У меня возникают проблемы с тем, как хранить ответы и связывать их с вопросом, вычеркивать их, как они неправильные, или отмечать его как "найденный".
Я думал об использовании хэша. Пожалуйста, дайте мне знать, как я должен структурировать код.
Спасибо!
EDIT
Пример данных -
Итак, я использую метод HASH ... мой хеш выглядит примерно так:
распечатать из хэша:
question_123 => a,b,c,d
question_155 => a,b,c
question_234 => T,F
Теперь мне нужно найти способ пройти каждую опцию, пока я не найду правильный ответ на этот вопрос.
EDIT
Чтобы уточнить кое-что, давайте предположим, что есть пул из 10 вопросов. Пользователь нажимает «Начать практику», которая генерирует 4 случайных вопроса из пула из 10. Таким образом, в текущем состоянии у меня есть четыре вопроса с ответами. Я прохожу и добавляю эти вопросы и их ответы в структуру данных (один из них ниже ... или использую файлы для их хранения). Затем я выбираю ответ. Затем пользователь должен отправить эти вопросы на рассмотрение. После нажатия кнопки «Отправить» в подсказке указывается, правильно ли задан вопрос x. Исходя из этого, структура данных должна обновляться, что является правильным ответом на этот вопрос.
Теперь промыть и повторить. На этот раз из этого же пула генерируется еще четыре набора случайных вопросов. На этот раз найдено два новых вопроса, поэтому они должны быть добавлены в структуру данных. Аналогичная логика должна быть использована для поиска ответов. Кроме того, к каждому варианту ответа (выбору) всегда присваивается уникальное числовое значение, поэтому мой сервер может проверить идентификатор ответа со значением. На моей стороне сервера у каждого вопроса просто есть идентификатор и связанный с ним правильный ответ. Использование моей таблицы победило бы цель этого эксперимента.
Визуализация происходящего:
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. True - 32
6. Cow - 65
1. Barrack - 21
8. C++ - 99
Сервер отвечает:
4. Correct
6. Correct
1. Correct
8. Correct
То же самое касается ответа. Надеюсь, это действительно проясняет ситуацию. Также обратите внимание, что к каждому ответу всегда будет присваиваться уникальное числовое значение.