// Numbas version: finer_feedback_settings {"name": "Inverse operations", "metadata": {"description": "

A quick practice set of problems for education students to take in preparation for their numeracy test.

", "licence": "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International"}, "duration": 0, "percentPass": 0, "showQuestionGroupNames": false, "shuffleQuestionGroups": false, "showstudentname": true, "question_groups": [{"name": "Group", "pickingStrategy": "all-ordered", "pickQuestions": 1, "questionNames": ["", "", "", "", ""], "variable_overrides": [[], [], [], [], []], "questions": [{"name": "Inverse operations: one step worded", "extensions": [], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "contributors": [{"name": "Ben Brawn", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/605/"}], "tags": [], "metadata": {"description": "", "licence": "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International"}, "statement": "", "advice": "", "rulesets": {}, "builtin_constants": {"e": true, "pi,\u03c0": true, "i": true}, "constants": [], "variables": {"operation_ed": {"name": "operation_ed", "group": "Ungrouped variables", "definition": "[\"added\", \"subtracted\", \"multiplied\", \"divided\"][seed]", "description": "", "templateType": "anything", "can_override": false}, "modifier": {"name": "modifier", "group": "Ungrouped variables", "definition": "random(20..80 except 20..80#10)", "description": "", "templateType": "anything", "can_override": false}, "display": {"name": "display", "group": "Ungrouped variables", "definition": "random(12..50#0.01)", "description": "", "templateType": "anything", "can_override": false}, "seed": {"name": "seed", "group": "Ungrouped variables", "definition": "random(0..3)", "description": "", "templateType": "anything", "can_override": false}, "inverse_list": {"name": "inverse_list", "group": "Ungrouped variables", "definition": "[\"subtract\", \"add\", \"divide by\", \"multiply by\"]", "description": "", "templateType": "anything", "can_override": false}, "operation_ing": {"name": "operation_ing", "group": "Ungrouped variables", "definition": "[\"adding\", \"subtracting\", \"multipling by\", \"dividing by\"][seed]", "description": "", "templateType": "anything", "can_override": false}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["seed", "operation_ed", "inverse_list", "modifier", "display", "operation_ing"], "variable_groups": [], "functions": {}, "preamble": {"js": "", "css": ""}, "parts": [{"type": "1_n_2", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "

Suppose you have used a calculator to do a long string of back-to-back calculations. You had the answer but before you could write it down you accidentally {operation_ed} $\\var{modifier}$ and got an answer of $\\var{display}$.

\n

What should you do?

\n

  

", "stepsPenalty": "1", "steps": [{"type": "information", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "

\"Plus\", \"minus\", \"times\", \"divide\" are operations. The operation that undoes a specific operation is its inverse. We can think of this as the opposite or reverse operation.  

\n

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
OperationIts inverse
$+$$-$
$-$$+$
$\\times$$\\div$
$\\div$$\\times$
\n

\n

So to undo accidentally {operation_ing} $\\var{modifier}$, we should {inverse_list[seed]} $\\var{modifier}$.

\n

You see, you made a number $\\var{modifier}$ more than you wanted, so you better make it $\\var{modifier}$ less.

\n

You see, you made a number $\\var{modifier}$ less than you wanted, so you better make it $\\var{modifier}$ more.

\n

You see, you made a number $\\var{modifier}$ times bigger than you wanted, so we better make it $\\var{modifier}$ times smaller.

\n

You see, you made a number $\\var{modifier}$ times smaller than you wanted, so you better make it $\\var{modifier}$ times bigger.

"}], "minMarks": 0, "maxMarks": 0, "shuffleChoices": true, "displayType": "radiogroup", "displayColumns": "1", "showCellAnswerState": true, "choices": ["Subtract $\\var{modifier}$ from $\\var{display}$", "Add $\\var{modifier}$ to $\\var{display}$", "Divide $\\var{display}$ by $\\var{modifier}$", "Multiply $\\var{display}$ by $\\var{modifier}$", "Start the whole calculation again"], "matrix": ["if(seed=0,1,0)", "if(seed=1,1,0)", "if(seed=2,1,0)", "if(seed=3,1,0)", 0], "distractors": ["", "", "", "", "Well, you could, but that would take a lot of time"]}], "partsMode": "all", "maxMarks": 0, "objectives": [], "penalties": [], "objectiveVisibility": "always", "penaltyVisibility": "always", "type": "question"}, {"name": "Inverse operations: two step worded", "extensions": [], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "contributors": [{"name": "Ben Brawn", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/605/"}], "tags": [], "metadata": {"description": "", "licence": "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International"}, "statement": "", "advice": "", "rulesets": {}, "builtin_constants": {"e": true, "pi,\u03c0": true, "i": true}, "constants": [], "variables": {"modifier1": {"name": "modifier1", "group": "Ungrouped variables", "definition": "random(20..80 except 20..80#10)", "description": "", "templateType": "anything", "can_override": false}, "seed1": {"name": "seed1", "group": "Ungrouped variables", "definition": "random(0..3)", "description": "", "templateType": "anything", "can_override": false}, "inverse_list": {"name": "inverse_list", "group": "Ungrouped variables", "definition": "[\"subtract\", \"add\", \"divide by\", \"multiply by\"]", "description": "", "templateType": "anything", "can_override": false}, "original": {"name": "original", "group": "Ungrouped variables", "definition": "random(-50..50 except -1..2)", "description": "", "templateType": "anything", "can_override": false}, "step1": {"name": "step1", "group": "Ungrouped variables", "definition": "[original+modifier1, original-modifier1, original*modifier1, original/modifier1][seed1]", "description": "

[\"added\", \"subtracted\", \"multiplied\", \"divided\"]

", "templateType": "anything", "can_override": false}, "step2": {"name": "step2", "group": "Ungrouped variables", "definition": "[step1+modifier2, step1-modifier2, step1*modifier2, step1/modifier2][seed2]", "description": "", "templateType": "anything", "can_override": false}, "modifier2": {"name": "modifier2", "group": "Ungrouped variables", "definition": "random(20..80 except 20..80#10 except modifier1)", "description": "", "templateType": "anything", "can_override": false}, "operation1": {"name": "operation1", "group": "Ungrouped variables", "definition": "[\"add\", \"subtract\", \"multiply by\", \"divide by\"][seed1]", "description": "", "templateType": "anything", "can_override": false}, "operation2": {"name": "operation2", "group": "Ungrouped variables", "definition": "[\"add\", \"subtract\", \"multiply by\", \"divide by\"][seed2]", "description": "", "templateType": "anything", "can_override": false}, "seed2": {"name": "seed2", "group": "Ungrouped variables", "definition": "random(0..3 except seed1)", "description": "", "templateType": "anything", "can_override": false}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["seed1", "seed2", "inverse_list", "modifier1", "original", "step1", "step2", "modifier2", "operation1", "operation2"], "variable_groups": [], "functions": {}, "preamble": {"js": "", "css": ""}, "parts": [{"type": "gapfill", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "

I take a number and {operation1} $\\var{modifier1}$. I then take the result and {operation2} $\\var{modifier2}$, and this results in $\\var[fractionNumbers]{step2}$. 

\n

How could you work out the original number?

\n

\n

Take $\\var[fractionNumbers]{step2}$ and [[0]] [[1]] and then [[2]] [[3]] to get [[4]].

", "stepsPenalty": "5", "steps": [{"type": "information", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "

\"Plus\", \"minus\", \"times\", \"divide\" are operations. The operation that undoes a specific operation is its inverse. We can think of this as the opposite or reverse operation.  

\n

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
OperationIts inverse
$+$$-$
$-$$+$
$\\times$$\\div$
$\\div$$\\times$
\n

\n

Another thing we need to realise is to undo a sequence of operations we need to undo them in the reverse order that they occurred in. 

\n

For example, if you put your socks on and then your shoes, to undo this, we have to take the shoes off first and then take the socks off second (notice the order).

\n
\n

In particular, for our question:

\n

To undo the last operation of \"{operation2} $\\var{modifier2}$\" we start with $\\var[fractionNumbers]{step2}$ and {inverse_list[seed2]} $\\var{modifier2}$.

\n

Now we have $\\var[fractionNumbers]{step1}$.

\n

Then to undo the original operation of \"{operation1} $\\var{modifier1}$\" we take $\\var[fractionNumbers]{step1}$ and {inverse_list[seed1]} $\\var{modifier1}$.

\n

This results in $\\var{original}$, which must be the original number.

"}], "gaps": [{"type": "1_n_2", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "minMarks": 0, "maxMarks": 0, "shuffleChoices": false, "displayType": "dropdownlist", "displayColumns": 0, "showCellAnswerState": true, "choices": ["add", "subtract", "multiply by", "divide by"], "matrix": ["if(seed2=1,1,0)", "if(seed2=0,1,0)", "if(seed2=3,1,0)", "if(seed2=2,1,0)"], "distractors": ["", "", "", ""]}, {"type": "1_n_2", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "minMarks": 0, "maxMarks": 0, "shuffleChoices": true, "displayType": "dropdownlist", "displayColumns": 0, "showCellAnswerState": true, "choices": ["{modifier1}", "{modifier2}"], "matrix": ["0", "1"], "distractors": ["", ""]}, {"type": "1_n_2", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "minMarks": 0, "maxMarks": 0, "shuffleChoices": false, "displayType": "dropdownlist", "displayColumns": 0, "showCellAnswerState": true, "choices": ["add", "subtract", "multiply by", "divide by"], "matrix": ["if(seed1=1,1,0)", "if(seed1=0,1,0)", "if(seed1=3,1,0)", "if(seed1=2,1,0)"], "distractors": ["", "", "", ""]}, {"type": "1_n_2", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "minMarks": 0, "maxMarks": 0, "shuffleChoices": true, "displayType": "dropdownlist", "displayColumns": 0, "showCellAnswerState": true, "choices": ["{modifier1}", "{modifier2}"], "matrix": ["1", 0], "distractors": ["", ""]}, {"type": "numberentry", "useCustomName": false, "customName": "", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "minValue": "{original}", "maxValue": "{original}", "correctAnswerFraction": false, "allowFractions": true, "mustBeReduced": false, "mustBeReducedPC": 0, "displayAnswer": "", "showFractionHint": true, "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain"}], "sortAnswers": false}], "partsMode": "all", "maxMarks": 0, "objectives": [], "penalties": [], "objectiveVisibility": "always", "penaltyVisibility": "always", "type": "question"}, {"name": "Inverse operations: two step symbolic", "extensions": [], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "contributors": [{"name": "Ben Brawn", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/605/"}], "tags": [], "metadata": {"description": "", "licence": "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International"}, "statement": "", "advice": "", "rulesets": {}, "builtin_constants": {"e": true, "pi,\u03c0": true, "i": true}, "constants": [], "variables": {"modifier1": {"name": "modifier1", "group": "Ungrouped variables", "definition": "random(20..80 except 20..80#10)", "description": "", "templateType": "anything", "can_override": false}, "seed1": {"name": "seed1", "group": "Ungrouped variables", "definition": "random(0..3)", "description": "

[\"add\", \"subtract\", \"multiply by\", \"divide by\"]

", "templateType": "anything", "can_override": false}, "inverse_list": {"name": "inverse_list", "group": "Ungrouped variables", "definition": "[\"subtract\", \"add\", \"divide by\", \"multiply by\"]", "description": "", "templateType": "anything", "can_override": false}, "original": {"name": "original", "group": "Ungrouped variables", "definition": "random(-50..50 except -1..2)", "description": "", "templateType": "anything", "can_override": false}, "step1": {"name": "step1", "group": "Ungrouped variables", "definition": "[original+modifier1, original-modifier1, original*modifier1, original/modifier1][seed1]", "description": "

[\"added\", \"subtracted\", \"multiplied\", \"divided\"]

", "templateType": "anything", "can_override": false}, "step2": {"name": "step2", "group": "Ungrouped variables", "definition": "[step1+modifier2, step1-modifier2, step1*modifier2, step1/modifier2][seed2]", "description": "", "templateType": "anything", "can_override": false}, "modifier2": {"name": "modifier2", "group": "Ungrouped variables", "definition": "random(20..80 except 20..80#10 except modifier1)", "description": "", "templateType": "anything", "can_override": false}, "operation1": {"name": "operation1", "group": "Ungrouped variables", "definition": "[\"add\", \"subtract\", \"multiply by\", \"divide by\"][seed1]", "description": "", "templateType": "anything", "can_override": false}, "operation2": {"name": "operation2", "group": "Ungrouped variables", "definition": "[\"add\", \"subtract\", \"multiply by\", \"divide by\"][seed2]", "description": "", "templateType": "anything", "can_override": false}, "seed2": {"name": "seed2", "group": "Ungrouped variables", "definition": "if(seed1=0 or seed1=1, random(2,3),random(0,1))", "description": "

[\"add\", \"subtract\", \"multiply by\", \"divide by\"]

", "templateType": "anything", "can_override": false}, "expression": {"name": "expression", "group": "Ungrouped variables", "definition": "[[\n \"error\",\n \"error\",\n\"\\\\var[fractionNumbers]\\{step2\\}=\\\\var\\{modifier2\\}\\\\times(\\\\var\\{pro\\}+\\\\var\\{modifier1\\})\",\n\"\\\\var[fractionNumbers]\\{step2\\}=\\\\frac\\{\\\\var\\{pro\\}+\\\\var\\{modifier1\\}\\}\\{\\\\var\\{modifier2\\}\\}\"\n],\n[\n \"error\",\n \"error\",\n\"\\\\var[fractionNumbers]\\{step2\\}=\\\\var\\{modifier2\\}\\\\times(\\\\var\\{pro\\}-\\\\var\\{modifier1\\})\",\n\"\\\\var[fractionNumbers]\\{step2\\}=\\\\frac\\{\\\\var\\{pro\\}-\\\\var\\{modifier1\\}\\}\\{\\\\var\\{modifier2\\}\\}\" \n],\n[\n\"\\\\var[fractionNumbers]\\{step2\\}=\\\\var\\{modifier1\\}\\\\times\\\\var\\{pro\\}+\\\\var\\{modifier2\\}\",\n\"\\\\var[fractionNumbers]\\{step2\\}=\\\\var\\{modifier1\\}\\\\times\\\\var\\{pro\\}-\\\\var\\{modifier2\\}\",\n \"error\",\n \"error\"\n],\n[\n\"\\\\var[fractionNumbers]\\{step2\\}=\\\\frac\\{\\\\var\\{pro\\}\\}\\{\\\\var\\{modifier1\\}\\}+\\\\var\\{modifier2\\}\",\n\"\\\\var[fractionNumbers]\\{step2\\}=\\\\frac\\{\\\\var\\{pro\\}\\}\\{\\\\var\\{modifier1\\}\\}-\\\\var\\{modifier2\\}\",\n \"error\",\n \"error\" \n]][seed1][seed2]\n", "description": "

[\"add\", \"subtract\", \"multiply by\", \"divide by\"]

", "templateType": "anything", "can_override": false}, "pro": {"name": "pro", "group": "Ungrouped variables", "definition": "expression(random('a','b','c','d','w','x','y','z'))", "description": "", "templateType": "anything", "can_override": false}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["seed1", "seed2", "inverse_list", "modifier1", "original", "step1", "step2", "modifier2", "operation1", "operation2", "expression", "pro"], "variable_groups": [], "functions": {}, "preamble": {"js": "", "css": ""}, "parts": [{"type": "gapfill", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "

Given {latex(expression)},

\n

to find the value of $\\var{pro}$ we can

\n

take $\\var[fractionNumbers]{step2}$ and [[0]] [[1]] and then [[2]] [[3]] to get $\\var{pro}=$ [[4]].

", "stepsPenalty": "5", "steps": [{"type": "information", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "

\"Plus\", \"minus\", \"times\", \"divide\" are operations. The operation that undoes a specific operation is its inverse. We can think of this as the opposite or reverse operation.  

\n

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
OperationIts inverse
$+$$-$
$-$$+$
$\\times$$\\div$
$\\div$$\\times$
\n

\n

Another thing we need to realise is to undo a sequence of operations we need to undo them in the reverse order that they occurred in. 

\n

For example, if you put your socks on and then your shoes, to undo this, we have to take the shoes off first and then take the socks off second (notice the order).

\n
\n

If we look at {latex(expression)} and follow what happens to $\\var{pro}$ (using the order of operations) we can see that starting with $\\var{pro}$ we {operation1} $\\var{modifier1}$ and then we {operation2} $\\var{modifier2}$. This results in $\\var[fractionNumbers]{step2}$.

\n

\n

To undo the last operation of \"{operation2} $\\var{modifier2}$\" we start with $\\var[fractionNumbers]{step2}$ and {inverse_list[seed2]} $\\var{modifier2}$.

\n

Now we have $\\var[fractionnumbers]{step1}$.

\n

Then to undo the original operation of \"{operation1} $\\var{modifier1}$\" we take $\\var[fractionNumbers]{step1}$ and {inverse_list[seed1]} $\\var{modifier1}$.

\n

This results in $\\var{original}$, which must be the original number $\\var{pro}$.

"}], "gaps": [{"type": "1_n_2", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "minMarks": 0, "maxMarks": 0, "shuffleChoices": false, "displayType": "dropdownlist", "displayColumns": 0, "showCellAnswerState": true, "choices": ["add", "subtract", "multiply by", "divide by"], "matrix": ["if(seed2=1,1,0)", "if(seed2=0,1,0)", "if(seed2=3,1,0)", "if(seed2=2,1,0)"], "distractors": ["", "", "", ""]}, {"type": "1_n_2", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "minMarks": 0, "maxMarks": 0, "shuffleChoices": true, "displayType": "dropdownlist", "displayColumns": 0, "showCellAnswerState": true, "choices": ["{modifier1}", "{modifier2}"], "matrix": ["0", "1"], "distractors": ["", ""]}, {"type": "1_n_2", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "minMarks": 0, "maxMarks": 0, "shuffleChoices": false, "displayType": "dropdownlist", "displayColumns": 0, "showCellAnswerState": true, "choices": ["add", "subtract", "multiply by", "divide by"], "matrix": ["if(seed1=1,1,0)", "if(seed1=0,1,0)", "if(seed1=3,1,0)", "if(seed1=2,1,0)"], "distractors": ["", "", "", ""]}, {"type": "1_n_2", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "minMarks": 0, "maxMarks": 0, "shuffleChoices": true, "displayType": "dropdownlist", "displayColumns": 0, "showCellAnswerState": true, "choices": ["{modifier1}", "{modifier2}"], "matrix": ["1", 0], "distractors": ["", ""]}, {"type": "numberentry", "useCustomName": false, "customName": "", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "minValue": "{original}", "maxValue": "{original}", "correctAnswerFraction": false, "allowFractions": true, "mustBeReduced": false, "mustBeReducedPC": 0, "displayAnswer": "", "showFractionHint": true, "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain"}], "sortAnswers": false}], "partsMode": "all", "maxMarks": 0, "objectives": [], "penalties": [], "objectiveVisibility": "always", "penaltyVisibility": "always", "type": "question"}, {"name": "Inverse operations: two step context", "extensions": [], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "contributors": [{"name": "Ben Brawn", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/605/"}], "tags": [], "metadata": {"description": "", "licence": "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International"}, "statement": "", "advice": "", "rulesets": {}, "builtin_constants": {"e": true, "pi,\u03c0": true, "i": true}, "constants": [], "variables": {"modifier1": {"name": "modifier1", "group": "Ungrouped variables", "definition": "switch(seed1=3, random(terminating_decimal(2,50)),seed1=1, random(0.1*original..0.8*original), random(20..80 except 20..80#10))", "description": "", "templateType": "anything", "can_override": false}, "seed1": {"name": "seed1", "group": "Ungrouped variables", "definition": "random(0..3)", "description": "", "templateType": "anything", "can_override": false}, "inverse_list": {"name": "inverse_list", "group": "Ungrouped variables", "definition": "[\"subtract\", \"add\", \"divide by\", \"multiply by\"]", "description": "", "templateType": "anything", "can_override": false}, "original": {"name": "original", "group": "Ungrouped variables", "definition": "switch(seed1=3 or seed2=3,random(200..800#10),random(25..200))", "description": "", "templateType": "anything", "can_override": false}, "step1": {"name": "step1", "group": "Ungrouped variables", "definition": "[original+modifier1, original-modifier1, original*modifier1, original/modifier1][seed1]", "description": "

[\"added\", \"subtracted\", \"multiplied\", \"divided\"]

", "templateType": "anything", "can_override": false}, "step2": {"name": "step2", "group": "Ungrouped variables", "definition": "[step1+modifier2, step1-modifier2, step1*modifier2, step1/modifier2][seed2]", "description": "", "templateType": "anything", "can_override": false}, "modifier2": {"name": "modifier2", "group": "Ungrouped variables", "definition": "switch(seed2=3, random(terminating_decimal(2,50)),seed2=1,random(0.1*step1..0.8*step1) ,random(20..80 except 20..80#10 except modifier1)) ", "description": "", "templateType": "anything", "can_override": false}, "operation1": {"name": "operation1", "group": "Ungrouped variables", "definition": "[[\"Your friend gives you \\$\\\\$\\\\var{modifier1}\\$.\", \"You spend \\$\\\\$\\\\var{modifier1}\\$.\", \"You convince \\$\\\\var{modifier1-1}\\$ other people with the same amount of money as you to give you theirs!\", \"You share your money equally between yourself and \\$\\\\var{modifier1-1}\\$ other people.\"][seed1],\n[\"You pour in an extra \\$\\\\\\var{modifier1}\\$ mL into the container.\", \"You remove \\$\\\\\\var{modifier1}\\$ mL from the container.\", \"You find there are $\\\\var{modifier1-1}$ other containers with the same amount of liquid in the cupboard and take them all as your own and put all the liquid in one large container.\", \"You share the liquid out evenly between $\\\\var{modifier1}$ smaller containers and then immediately trip and break all but one!\"][seed1]\n][switch]\n//[\"add\", \"subtract\", \"multiply by\", \"divide by\"][seed1]", "description": "", "templateType": "anything", "can_override": false}, "operation2": {"name": "operation2", "group": "Ungrouped variables", "definition": "[[\"your friend gives you \\$\\\\$\\\\var{modifier2}\\$\", \"you spend \\$\\\\$\\\\var{modifier2}\\$\", \"you convince \\$\\\\var{modifier2-1}\\$ other people with the same amount of money as you to give you theirs\", \"you share the money equally between yourself and \\$\\\\var{modifier2-1}\\$ other people\"][seed2]\n,[\"you pour in an extra \\$\\\\\\var{modifier2}\\$ mL\", \"you remove \\$\\\\\\var{modifier2}\\$ mL\", \"you find there are $\\\\var{modifier2-1}$ other containers now with the same amount of liquid in them in the cupboard and take them all as your own. You put all of the liquid in one large container\", \"you share all the liquid out evenly between $\\\\var{modifier2}$ smaller containers and then immediately trip and break all but one!\"][seed2]\n][switch]\n //[\"add\", \"subtract\", \"multiply by\", \"divide by\"][seed2]", "description": "", "templateType": "anything", "can_override": false}, "seed2": {"name": "seed2", "group": "Ungrouped variables", "definition": "random(0..3 except seed1)", "description": "", "templateType": "anything", "can_override": false}, "switch": {"name": "switch", "group": "Ungrouped variables", "definition": "random(0,1)", "description": "

money or liquid 

", "templateType": "anything", "can_override": false}, "intro": {"name": "intro", "group": "Ungrouped variables", "definition": "[\"You have some money.\", \"You have a container with some amount of liquid in it.\"][switch]", "description": "", "templateType": "anything", "can_override": false}, "result": {"name": "result", "group": "Ungrouped variables", "definition": "[\"You now have \\$\\\\$\\\\var{step2}\\$.\\n\\nHow could you work out the original amount of money you had?\", \"You now have \\$\\\\var{step2}\\$ mL.\\n\\nHow could you work out the original amount of liquid you had?\"][switch]", "description": "", "templateType": "anything", "can_override": false}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["switch", "intro", "seed1", "seed2", "inverse_list", "modifier1", "original", "step1", "step2", "modifier2", "operation1", "operation2", "result"], "variable_groups": [], "functions": {"terminating_decimal": {"parameters": [["p", "number"], ["q", "number"]], "type": "anything", "language": "jme", "definition": "map(j+p,j,indices(map(sum(factorise(k)[1..2]+factorise(k)[3..len(factorise(k))]),k,p..q),0))\n//terminating_decimal(p,q) generates a list of integers from the range [p,q] that only have factors of 2 and/or 5 (and therefore can be used in divisions to result in only terminating decimals)."}}, "preamble": {"js": "", "css": ""}, "parts": [{"type": "gapfill", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "

{intro} {operation1} Then {operation2}. {result}

\n

\n

Take $\\$$$\\var{step2}$ mL and [[0]] [[1]] and then [[2]] [[3]] to get $\\$$[[4]] mL.

\n

", "stepsPenalty": "5", "steps": [{"type": "information", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "

\"Plus\", \"minus\", \"times\", \"divide\" are operations. The operation that undoes a specific operation is its inverse. We can think of this as the opposite or reverse operation.  

\n

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
OperationIts inverse
$+$$-$
$-$$+$
$\\times$$\\div$
$\\div$$\\times$
\n

\n

Another thing we need to realise is to undo a sequence of operations we need to undo them in the reverse order that they occurred in. 

\n

For example, if you put your socks on and then your shoes, to undo this, we have to take the shoes off first and then take the socks off second (notice the order).

\n
\n

In particular, for our question:

\n

To undo the last operation of \"{operation2}\" we start with $\\var{step2}$ and {inverse_list[seed2]} $\\var{modifier2}$ (since your money was included)(since your container was included).

\n

Now we have $\\var{step1}$.

\n

Then to undo the original operation of \"{operation1}\" we take $\\var{step1}$ and {inverse_list[seed1]} $\\var{modifier1}$ (since your money was included)(since your container was included).

\n

This results in $\\var{original}$, which must be the original amount.

\n

"}], "gaps": [{"type": "1_n_2", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "minMarks": 0, "maxMarks": 0, "shuffleChoices": false, "displayType": "dropdownlist", "displayColumns": 0, "showCellAnswerState": true, "choices": ["add", "subtract", "multiply by", "divide by"], "matrix": ["if(seed2=1,1,0)", "if(seed2=0,1,0)", "if(seed2=3,1,0)", "if(seed2=2,1,0)"], "distractors": ["", "", "", ""]}, {"type": "1_n_2", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "minMarks": 0, "maxMarks": 0, "shuffleChoices": true, "displayType": "dropdownlist", "displayColumns": 0, "showCellAnswerState": true, "choices": ["{modifier1}", "{modifier2}", "{modifier1-1}", "{modifier2-1}"], "matrix": ["0", "1", 0, 0], "distractors": ["", "", "", ""]}, {"type": "1_n_2", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "minMarks": 0, "maxMarks": 0, "shuffleChoices": false, "displayType": "dropdownlist", "displayColumns": 0, "showCellAnswerState": true, "choices": ["add", "subtract", "multiply by", "divide by"], "matrix": ["if(seed1=1,1,0)", "if(seed1=0,1,0)", "if(seed1=3,1,0)", "if(seed1=2,1,0)"], "distractors": ["", "", "", ""]}, {"type": "1_n_2", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "minMarks": 0, "maxMarks": 0, "shuffleChoices": true, "displayType": "dropdownlist", "displayColumns": 0, "showCellAnswerState": true, "choices": ["{modifier1}", "{modifier2}", "{modifier1-1}", "{modifier2-1}"], "matrix": ["1", 0, 0, 0], "distractors": ["", "", "", ""]}, {"type": "numberentry", "useCustomName": false, "customName": "", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "minValue": "{original}", "maxValue": "{original}", "correctAnswerFraction": false, "allowFractions": true, "mustBeReduced": false, "mustBeReducedPC": 0, "displayAnswer": "", "showFractionHint": true, "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain"}], "sortAnswers": false}], "partsMode": "all", "maxMarks": 0, "objectives": [], "penalties": [], "objectiveVisibility": "always", "penaltyVisibility": "always", "type": "question"}, {"name": "Inverse formula: Cost/duration of phone calls", "extensions": [], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "contributors": [{"name": "Ben Brawn", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/605/"}], "tags": [], "metadata": {"description": "", "licence": "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International"}, "statement": "", "advice": "", "rulesets": {}, "builtin_constants": {"e": true, "pi,\u03c0": true, "i": true}, "constants": [], "variables": {"list": {"name": "list", "group": "Ungrouped variables", "definition": "shuffle([\n [\"BANGLADESH\",0.40, 1.96, 2.26], \n [\"HAITI\", 0.40, 2.93, 2.93],\n [\"SWITZERLAND\", 0.40, 0.75, 1.31],\n [\"FRANCE\", 0.40, 0.75, 1.31],\n [\"BRAZIL\", 0.40, 1.31, 1.58],\n [\"ARGENTINA\", 0.40 ,1.31, 1.58],\n [\"IRAN\", 0.40 ,1.39, 1.61],\n [\"GERMANY\", 0.40, 0.75, 1.31],\n [\"UNITED KINGDOM\", 0.40, 0.55 ,1.13],\n [\"NEW ZEALAND\", 0.40 , 0.44, 1.03],\n [\"KOREA REPUBLIC OF\", 0.40, 1.01, 1.31],\n [\"JAPAN\", 0.40, 0.75, 1.31],\n [\"SINGAPORE\", 0.40, 0.69 ,1.04],\n [\"BARBADOS\", 0.40, 1.96, 1.97],\n[\"HAWAII\", 0.40, 0.44, 0.45],\n[\"IRAQ\", 0.40, 2.32, 2.33],\n[\"CANADA\", 0.40, 0.64, 0.65],\n[\"SPAIN\", 0.40, 2.52 ,2.53],\n[\"COSTA RICA\", 0.40, 2.10, 2.12],\n[\"ANTARCTICA\", 0.40, 0.81, 0.82]\n])[0..4]", "description": "

https://www.telstra.com.au/mobile-phones/calling-overseas-from-australia

", "templateType": "anything", "can_override": false}, "type": {"name": "type", "group": "Ungrouped variables", "definition": "if(type_seed=2, 'fixed line', 'international (non-roaming) mobile')", "description": "", "templateType": "anything", "can_override": false}, "country": {"name": "country", "group": "Ungrouped variables", "definition": "random(list)", "description": "", "templateType": "anything", "can_override": false}, "n": {"name": "n", "group": "Ungrouped variables", "definition": "len(country[0])+1", "description": "", "templateType": "anything", "can_override": false}, "type_seed": {"name": "type_seed", "group": "Ungrouped variables", "definition": "random(2,3)", "description": "", "templateType": "anything", "can_override": false}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["list", "country", "type_seed", "type", "n"], "variable_groups": [], "functions": {}, "preamble": {"js": "", "css": ""}, "parts": [{"type": "gapfill", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "

A phone company charges the following rates for the following destinations.

\n

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
DestinationConnection Fee
(inc GST)
Voice Call Rates
(per minute)
to Fixed Line
(inc GST)
to an International
(non-roaming) Mobile
(inc GST)
{list[0][0]}\\${list[0][1]}\\${list[0][2]}\\${list[0][3]}
{list[1][0]}\\${list[1][1]}\\${list[1][2]}\\${list[1][3]}
{list[2][0]}\\${list[2][1]}\\${list[2][2]}\\${list[2][3]}
{list[3][0]}\\${list[3][1]}\\${list[3][2]}\\${list[3][3]}
\n

\n

This means the formula for the cost $C$ in dollars of an $m$ minute phone call to an {type} in {country[0][0]+lower(country[0][1..n])} is

\n

$C=\\var{country[1]}+\\var{country[type_seed]}m$.

\n

\n

In the field below, complete the formula for the number of minutes, $m$, that a phone call must be if it cost $C$ dollars and is to an {type} in {country[0][0]+lower(country[0][1..n])}.

\n

$m=$[[0]]

\n

Note 1: The warning \"Not enough arguments for operation ...\" simply means you haven't finished yet! 

\n

Note 2: You shouldn't leave off the first zero of a decimal.

\n

Note 3: You can use * for multiplication and / for division.

", "stepsPenalty": "1", "steps": [{"type": "information", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "

Algebraic approach

\n

Since we are told that

\n

$C=\\var{country[1]}+\\var{country[type_seed]}m$

\n

we can do the inverse operations in the reverse order to get $m$ by itself.

\n

\n

Since the last operation to happen to $m$ is adding $\\var{country[1]}$ we can undo this by subtracting $\\var{country[1]}$ from both sides of the equation to have

\n

$C-\\var{country[1]}=\\var{country[type_seed]}m$.

\n

Now the only operation happening to $m$ is multiplication by $\\var{country[type_seed]}$. We can undo this by dividing both sides of the equation by $\\var{country[type_seed]}$ to have

\n

$\\dfrac{C-\\var{country[1]}}{\\var{country[type_seed]}}=m$.

\n

We can swap the sides and write

\n

$m=\\dfrac{C-\\var{country[1]}}{\\var{country[type_seed]}}$.

\n

Compare this to the original equation.

\n

Constructive approach

\n

First, you need to make sense of the table.

\n

Find the row that corresponds to {country[0][0]+lower(country[0][1..n])}. Notice that there is a connection fee of $\\$\\var{country[1]}$.

\n

Find the column for the type of phone to be rung, i.e. {type}. The cell at the intersection of the row and column of interest is the charge per minute, in your case $\\$\\var{country[type_seed]}$ per minute.

\n

\n

Since the cost includes a connection fee of $\\$\\var{country[1]}$ regardless of the duration, we should subtract this from the cost $C$ so we can focus on the cost from the duration of the call, that is $C-\\var{country[1]}$.

\n

Since each minute costs $\\$\\var{country[type_seed]}$, we should take our cost from the duration and see how many $\\$\\var{country[type_seed]}$ go into it. That is $\\dfrac{C-\\var{country[1]}}{\\var{country[type_seed]}}$. This must be the number of minutes!

\n

Therefore 

\n

$m=\\dfrac{C-\\var{country[1]}}{\\var{country[type_seed]}}$.

\n

\n

\n

"}], "gaps": [{"type": "jme", "useCustomName": false, "customName": "", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "answer": "(C-{country[1]})/{country[type_seed]}", "showPreview": true, "checkingType": "absdiff", "checkingAccuracy": 0.001, "failureRate": 1, "vsetRangePoints": 5, "vsetRange": [0, 1], "checkVariableNames": true, "singleLetterVariables": false, "allowUnknownFunctions": true, "implicitFunctionComposition": false, "caseSensitive": false, "valuegenerators": [{"name": "c", "value": ""}]}], "sortAnswers": false}], "partsMode": "all", "maxMarks": 0, "objectives": [], "penalties": [], "objectiveVisibility": "always", "penaltyVisibility": "always", "type": "question"}]}], "allowPrinting": true, "navigation": {"allowregen": true, "reverse": true, "browse": true, "allowsteps": true, "showfrontpage": false, "showresultspage": "oncompletion", "navigatemode": "sequence", "onleave": {"action": "none", "message": ""}, "preventleave": true, "startpassword": "", "allowAttemptDownload": false, "downloadEncryptionKey": ""}, "timing": {"allowPause": true, "timeout": {"action": "none", "message": ""}, "timedwarning": {"action": "none", "message": ""}}, "feedback": {"showactualmark": true, "showtotalmark": true, "showanswerstate": true, "allowrevealanswer": true, "advicethreshold": 0, "intro": "", "end_message": "", "reviewshowscore": true, "reviewshowfeedback": true, "reviewshowexpectedanswer": true, "reviewshowadvice": true, "feedbackmessages": [], "enterreviewmodeimmediately": true, "showexpectedanswerswhen": "inreview", "showpartfeedbackmessageswhen": "always", "showactualmarkwhen": "always", "showtotalmarkwhen": "always", "showanswerstatewhen": "always", "showadvicewhen": "inreview"}, "diagnostic": {"knowledge_graph": {"topics": [], "learning_objectives": []}, "script": "diagnosys", "customScript": ""}, "type": "exam", "contributors": [{"name": "Ben Brawn", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/605/"}], "extensions": [], "custom_part_types": [], "resources": []}