Here is a simple multiple choice question: identify the interval containing . In this set up, we introduce a permutation so that even though the answers are fixed, the correct answer will not necessarily be the same for all students.
The snippet of code is below. This is a good deal simpler than the matching questions, and hopefully the code is clear. Once again we have to retrieve the answer from an ordered list. The correct answer is $answers[1] (the second answer!). The letters are listed with $ALPHABET[i] corresponding to $answers[(i)], so $answers[1] corresponds to $ALPHABET[ (1)].
@answers = ("the interval \( [2, 3) \)", "the interval \( [3, 4) \)", "the interval \( [4, 5) \)", "the interval \( [5, 6) \)"); ## A list consisting of 0, 1, 2, 3 in "random" order. @permutation = NchooseK(4,4); ## Ok, we are ready to begin... ## TEXT(beginproblem()); BEGIN_TEXT $BR The real number \( \pi \) is which interval? \{ans_rule(10)\} $BR END_TEXT TEXT(OL(@answers[@permutation])); @inverted_alphabet = @ALPHABET[invert(@permutation)]; ## The answer is $answers[1] ANS(std_str_cmp($inverted_alphabet[1]));