\label{Custom_Response_Problems} Custom Response is a way to have a problem graded based on an algorithm. The use of this response type is generally discouraged, since the responses will not be analyzable by the LON-CAPA statistics tools. The student answer is stored in the variable \$submission, and needs to be evaluated by Perl code inside the -tag. Custom Response needs to return a standard LON-CAPA. The most common response are: \begin{itemize} \item EXACT\_ANS: return if solved exactly correctly \item APPROX\_ANS: return if solved approximately \item INCORRECT: return if not correct, uses up a try \item SIG\_FAIL, NO\_UNIT, EXTRA\_ANSWER, MISSING\_ANSWER, BAD\_FORMULA, WANTED\_NUMERIC: return if not correct for different reasons, does not use up a try \end{itemize} The answer display is shown instead of the student response in 'show answer' mode. The following example illustrates this: \begin{verbatim} Accept an answer of around 90 or -90 # We do not want a vector if ($submission=~/\,/) { return 'EXTRA_ANSWER'; } # Need a numerical answer here if ($submission!~/^[\d\.\-\e]+$/i) { return 'WANTED_NUMERIC'; } $difference=abs(90-abs($submission)); if ($difference==0) { return 'EXACT_ANS'; } if ($difference < 0.1) { return 'APPROX_ANS'; } return 'INCORRECT'; \end{verbatim} Full list of possible return codes: \begin{itemize} \item EXACT_ANS: student is exactly correct \item APPROX_ANS: student is approximately correct \item NO_RESPONSE: student submitted no response \item MISSING_ANSWER: student submitted some but not all parts of a response \item EXTRA_ANSWER: student submitted a vector of values when a scalar was expected \item WANTED_NUMERIC: expected a numeric answer and didn't get one \item SIG_FAIL: incorrect number of Significant Figures \item UNIT_FAIL: incorrect unit \item UNIT_NOTNEEDED: Submitted a unit when one shouldn't \item UNIT_INVALID_INSTRUCTOR: the unit provided by the author of the problem is unparsable \item UNIT_INVALID_STUDENT: the unit provided by the student is unparasable \item UNIT_IRRECONCIBLE: the unit from the student and the instructor are of different types \item NO_UNIT: needed a unit but none was submitted \item BAD_FORMULA: syntax error in submitted formula \item INCORRECT: answer was wrong \item SUBMITTED: submission wasn't graded \item DRAFT: submission only stored \item MISORDERED_RANK: student submitted a poorly order rank response \item ERROR: unable to get a grade \item ASSIGNED_SCORE: there is a resource.partid.responseid.awarded the real awarded should be set to the average of the individual awards \item TOO_LONG: answer submission to CAPA engine longer than 500 characters \item INVALID_FILETYPE: student tried to upload a file that was of an extension that was not specifically allowed \item COMMA_FAIL: answer requires the use of comma grouping and it wasn't provided or was incorrect \end{itemize}