Matching question template
Download file: Matching.pg
DOCUMENT();
loadMacros(
'PGstandard.pl', 'PGML.pl',
'PGchoicemacros.pl', 'PGgraders.pl',
'unionTables.pl', 'PGcourse.pl'
);
Preamble
The PGchoicemacros.pl macro is used to construct the list of multiple choice items, and the custom problem grader fluid from PGgraders.pl is used for incremental grading.
$showPartialCorrectAnswers = 0;
# Incremental grader
install_problem_grader(~~&custom_problem_grader_fluid);
$ENV{grader_numright} = [ 2, 4, 6 ];
$ENV{grader_scores} = [ 0.3, 0.6, 1 ];
$ENV{grader_message} =
'You can earn '
. '30% partial credit for 2 - 3 correct answers, and '
. '60% partial credit for 4 - 5 correct answers.';
# All or nothing grader
# install_problem_grader(~~&std_problem_grader);
# Create a matching list and use popups
$ml = new_match_list();
$ml->rf_print_q(~~&pop_up_list_print_q);
$ml->ra_pop_up_list([
'No answer' => '?',
'A' => 'A',
'B' => 'B',
'C' => 'C',
'D' => 'D',
'E' => 'E',
'F' => 'F',
'G' => 'G',
'H' => 'H',
'I' => 'I',
]);
# Add correct questions and answers
$ml->qa(
'Question a?',
'Answer a',
'Question b?',
'Answer b',
'Question c?',
'Answer c',
'Question d?',
'Answer d',
'Question e?',
'Answer e',
'Question f?',
'Answer f',
);
$ml->choose(6);
# Add extra incorrect answers
$ml->extra('Extra answer 1', 'Extra answer 2',);
$ml->choose_extra(2);
$ml->makeLast('None of the above');
Setup
Withhold feedback when answers are submitted by setting $showPartialCorrectAnswers = 0;.
This problem uses an incremental grader called the custom_problem_grader_fluid. With this problem grader, the number of correct answers [2, 4, 6] and their corresponding scores [0.3, 0.6, 1] must be specified. The last entry in the grader_numright array must be the total number of questions asked, and the last entry in the grader_scores array must be 1 (otherwise nobody can earn full credit!). The grader message can also be customized by setting the value of grader_message to the desired custom message.
If a grader is desired that awards full credit when all questions are correct and no credit otherwise, use the commented out standard problem grader code instead.
Create a list of 6 questions and answers, 2 extra answers, and a ‘None of the above’ answer that will be made last with makeLast. So the popup list must have 9 entries A through I.
For more details, see MatchingProblems from the Problem Techniques documentation.
BEGIN_PGML Match each question with its answer. [@ ColumnMatchTable($ml) @]*** END_PGML
Statement
The ColumnMatchTable() method is provided by the macro file unionTables.pl.
ANS(str_cmp($ml->ra_correct_ans));
Answer
This is used for answer checking.@correct = @{ $ml->ra_correct_ans() };
$answerstring = join(', ', @correct);
BEGIN_PGML_SOLUTION
The correct answers are [$answerstring].
END_PGML_SOLUTION
ENDDOCUMENT();
Solution
Extract the correct answers from the MatchList object and reformat.