AnswerOrderedList1

From WeBWorK_wiki
Revision as of 16:04, 10 March 2023 by Pstaabp (talk | contribs) (Switch to PGML and remove AnswerFormatHelp)
Jump to navigation Jump to search

Answer is an Ordered List

Click to enlarge

This PG code shows how to write a question in which the answer is an ordered list, such as a sequence of numbers.


Templates by Subject Area

PG problem file Explanation

Problem tagging data

Problem tagging:

DOCUMENT();

loadMacros(
  'PGstandard.pl',
  'MathObjects.pl',
  'PGML.pl',
  'PGcourse.pl'
);

TEXT(beginproblem());

Initialization:

Context("Numeric");

@seq = ();
$seq[0] = 1;
$seq[1] = 1;
foreach my $i (2..6) {
  $seq[$i] = $seq[$i-1] + $seq[$i-2];
}

$answer_string = join(', ',@seq);
$answer_cmp = Compute("$answer_string")->cmp(ordered=>1);

Setup: We create an empty array @seq and then fill it with scalars using direct assignment and a foreach loop. Since the entries in the array @seq do not have commas between them, we create a Perl string $answer that joins the entries of the array @seq by a comma followed by a space ", ". Then, we make this string a MathObject by putting Compute() around it.

Since the answer is a MathObject List, which is by default unordered, we must specify that the answer checker use ordered=>1

BEGIN_PGML
If [` s_1 = [$seq[0]] `], [` s_2 = [$seq[1]] `], and
[` s_n = s_{n-1} + s_{n-2} `], find the first seven
terms of this sequence, including [` s_1 `] and
[` s_2 `].  Enter your answer as a comma separated
list of numbers.

Sequence = [_____]{$answer_cmp}

[@ helpLink('numbers') @]*
END_PGML

Main Text:

Context()->texStrings;
BEGIN_SOLUTION
Solution explanation goes here.
END_SOLUTION
Context()->normalStrings;

COMMENT('MathObject version.');

ENDDOCUMENT();

Solution:

Templates by Subject Area