// Numbas version: finer_feedback_settings {"name": "5_RLCParrallel_VI_v00", "extensions": ["geogebra", "quantities"], "custom_part_types": [{"source": {"pk": 19, "author": {"name": "William Haynes", "pk": 2530}, "edit_page": "/part_type/19/edit"}, "name": "Engineering Accuracy with units", "short_name": "engineering-answer", "description": "
A value with units marked right if within an adjustable % error of the correct value. Marked close if within a wider margin of error.
", "help_url": "", "input_widget": "string", "input_options": {"correctAnswer": "siground(settings['correctAnswer'],4)", "hint": {"static": true, "value": ""}, "allowEmpty": {"static": true, "value": true}}, "can_be_gap": true, "can_be_step": true, "marking_script": "mark:\nswitch( \n right and good_units and right_sign, add_credit(1.0,'Correct.'),\n right and good_units and not right_sign, add_credit(settings['C2'],'Wrong sign.'),\n right and right_sign and not good_units, add_credit(settings['C2'],'Correct value, but wrong or missing units.'),\n close and good_units, add_credit(settings['C1'],'Close.'),\n close and not good_units, add_credit(settings['C3'],'Answer is close, but wrong or missing units.'),\n incorrect('Wrong answer.')\n)\n\ninterpreted_answer:\nqty(student_scalar, student_units)\n\n\n\ncorrect_quantity:\nsettings[\"correctAnswer\"]\n\n\n\ncorrect_units:\nunits(correct_quantity)\n\n\nallowed_notation_styles:\n[\"plain\",\"en\"]\n\nmatch_student_number:\nmatchnumber(studentAnswer,allowed_notation_styles)\n\nstudent_scalar:\nmatch_student_number[1]\n\nstudent_units:\nreplace_regex('ohms','ohm',\n replace_regex('\u00b0', ' deg',\n replace_regex('-', ' ' ,\n studentAnswer[len(match_student_number[0])..len(studentAnswer)])),\"i\")\n\ngood_units:\ntry(\ncompatible(quantity(1, student_units),correct_units),\nmsg,\nfeedback(msg);false)\n\n\nstudent_quantity:\nswitch(not good_units, \n student_scalar * correct_units, \n not right_sign,\n -quantity(student_scalar, student_units),\n quantity(student_scalar,student_units)\n)\n \n\n\npercent_error:\ntry(\nscalar(abs((correct_quantity - student_quantity)/correct_quantity))*100 \n,msg,\nif(student_quantity=correct_quantity,0,100))\n \n\nright:\npercent_error <= settings['right']\n\n\nclose:\nright_sign and percent_error <= settings['close']\n\nright_sign:\nsign(student_scalar) = sign(correct_quantity)", "marking_notes": [{"name": "mark", "description": "This is the main marking note. It should award credit and provide feedback based on the student's answer.", "definition": "switch( \n right and good_units and right_sign, add_credit(1.0,'Correct.'),\n right and good_units and not right_sign, add_credit(settings['C2'],'Wrong sign.'),\n right and right_sign and not good_units, add_credit(settings['C2'],'Correct value, but wrong or missing units.'),\n close and good_units, add_credit(settings['C1'],'Close.'),\n close and not good_units, add_credit(settings['C3'],'Answer is close, but wrong or missing units.'),\n incorrect('Wrong answer.')\n)"}, {"name": "interpreted_answer", "description": "A value representing the student's answer to this part.", "definition": "qty(student_scalar, student_units)\n\n"}, {"name": "correct_quantity", "description": "", "definition": "settings[\"correctAnswer\"]\n\n"}, {"name": "correct_units", "description": "", "definition": "units(correct_quantity)\n"}, {"name": "allowed_notation_styles", "description": "", "definition": "[\"plain\",\"en\"]"}, {"name": "match_student_number", "description": "", "definition": "matchnumber(studentAnswer,allowed_notation_styles)"}, {"name": "student_scalar", "description": "", "definition": "match_student_number[1]"}, {"name": "student_units", "description": "Modify the unit portion of the student's answer by
\n1. replacing \"ohms\" with \"ohm\" case insensitive
\n2. replacing '-' with ' '
\n3. replacing '°' with ' deg'
\nto allow answers like 10 ft-lb and 30°
", "definition": "replace_regex('ohms','ohm',\n replace_regex('\u00b0', ' deg',\n replace_regex('-', ' ' ,\n studentAnswer[len(match_student_number[0])..len(studentAnswer)])),\"i\")"}, {"name": "good_units", "description": "", "definition": "try(\ncompatible(quantity(1, student_units),correct_units),\nmsg,\nfeedback(msg);false)\n"}, {"name": "student_quantity", "description": "This fixes the student answer for two common errors.
\nIf student_units are wrong - replace with correct units
\nIf student_scalar has the wrong sign - replace with right sign
\nIf student makes both errors, only one gets fixed.
", "definition": "switch(not good_units, \n student_scalar * correct_units, \n not right_sign,\n -quantity(student_scalar, student_units),\n quantity(student_scalar,student_units)\n)\n \n"}, {"name": "percent_error", "description": "", "definition": "try(\nscalar(abs((correct_quantity - student_quantity)/correct_quantity))*100 \n,msg,\nif(student_quantity=correct_quantity,0,100))\n "}, {"name": "right", "description": "", "definition": "percent_error <= settings['right']\n"}, {"name": "close", "description": "Only marked close if the student actually has the right sign.
", "definition": "right_sign and percent_error <= settings['close']"}, {"name": "right_sign", "description": "", "definition": "sign(student_scalar) = sign(correct_quantity) "}], "settings": [{"name": "correctAnswer", "label": "Correct Quantity.", "help_url": "", "hint": "The correct answer given as a JME quantity.", "input_type": "code", "default_value": "", "evaluate": true}, {"name": "right", "label": "% Accuracy for right.", "help_url": "", "hint": "Question will be considered correct if the scalar part of the student's answer is within this % of correct value.", "input_type": "code", "default_value": "0.2", "evaluate": true}, {"name": "close", "label": "% Accuracy for close.", "help_url": "", "hint": "Question will be considered close if the scalar part of the student's answer is within this % of correct value.", "input_type": "code", "default_value": "1.0", "evaluate": true}, {"name": "C1", "label": "Close with units.", "help_url": "", "hint": "Partial Credit for close value with appropriate units. if correct answer is 100 N and close is ±1%,series of R and L and C
\n\nfind Z (mag and Phase)
\nstep find Xl
", "licence": "Creative Commons Attribution-NonCommercial 4.0 International"}, "statement": "\n\n\n\n\n\n\n\nA circuit consists of a two parrallel branches and is supplied by a {f} Hz, {Vs} V ac voltage source.
\nBranch 1 $R= $ {qty({R1},'ohm')}, $L = ${qty(L1mH,'mH')} and $C = ${qty(C1uF,'uF')}
\nBranch 2 $R= $ {qty({R2},'ohm')}, $L = ${qty(L2mH,'mH')} and $C = ${qty(C2uF,'uF')}
\nFind the current flowing from the source. ${Is}$.
", "advice": "", "rulesets": {}, "extensions": ["geogebra"], "builtin_constants": {"e": true, "pi,\u03c0": true, "i": true}, "constants": [], "variables": {"R1": {"name": "R1", "group": "Given in question", "definition": "random(0..100#5 except 0)", "description": "", "templateType": "anything", "can_override": false}, "Zbr1": {"name": "Zbr1", "group": "Ungrouped variables", "definition": "Rbr1+i*Xbr1", "description": "", "templateType": "anything", "can_override": false}, "L1": {"name": "L1", "group": "Ungrouped variables", "definition": "L1mH*10^-3", "description": "", "templateType": "anything", "can_override": false}, "Xl1": {"name": "Xl1", "group": "Ungrouped variables", "definition": "2*pi*f*L1", "description": "", "templateType": "anything", "can_override": false}, "f": {"name": "f", "group": "Given in question", "definition": "random(50 .. 60#10)", "description": "", "templateType": "randrange", "can_override": false}, "C1uF": {"name": "C1uF", "group": "Given in question", "definition": "random(10 .. 200#20)", "description": "", "templateType": "randrange", "can_override": false}, "C1": {"name": "C1", "group": "Ungrouped variables", "definition": "C1uF*10^-6", "description": "", "templateType": "anything", "can_override": false}, "Xbr1": {"name": "Xbr1", "group": "Ungrouped variables", "definition": "XL1-XC1", "description": "", "templateType": "anything", "can_override": false}, "XC1": {"name": "XC1", "group": "Ungrouped variables", "definition": "1/(2*pi*f*C1) ", "description": "", "templateType": "anything", "can_override": false}, "uF": {"name": "uF", "group": "FreqUsedDefinitions", "definition": "'\\mu F'", "description": "", "templateType": "anything", "can_override": false}, "L1mH": {"name": "L1mH", "group": "Given in question", "definition": "random(100 .. 200#10)", "description": "", "templateType": "randrange", "can_override": false}, "Rbr1": {"name": "Rbr1", "group": "Ungrouped variables", "definition": "R1", "description": "", "templateType": "anything", "can_override": false}, "Vs": {"name": "Vs", "group": "Given in question", "definition": "random(180 .. 280#10)", "description": "", "templateType": "randrange", "can_override": false}, "Ibr1": {"name": "Ibr1", "group": "Ungrouped variables", "definition": "Vs/Zbr1", "description": "", "templateType": "anything", "can_override": false}, "R2": {"name": "R2", "group": "Given in question", "definition": "random(0..100#5 except 0)", "description": "", "templateType": "anything", "can_override": false}, "L2mH": {"name": "L2mH", "group": "Given in question", "definition": "random(100 .. 200#20)", "description": "", "templateType": "randrange", "can_override": false}, "C2uF": {"name": "C2uF", "group": "Given in question", "definition": "random(50 .. 200#10)", "description": "", "templateType": "randrange", "can_override": false}, "L2": {"name": "L2", "group": "Ungrouped variables", "definition": "L2mH*10^-3", "description": "", "templateType": "anything", "can_override": false}, "C2": {"name": "C2", "group": "Ungrouped variables", "definition": "C2uF*10^-6", "description": "", "templateType": "anything", "can_override": false}, "XC2": {"name": "XC2", "group": "Ungrouped variables", "definition": "1/(2*pi*f*C2) ", "description": "", "templateType": "anything", "can_override": false}, "Xl2": {"name": "Xl2", "group": "Ungrouped variables", "definition": "2*pi*f*L2\n", "description": "", "templateType": "anything", "can_override": false}, "Xbr2": {"name": "Xbr2", "group": "Ungrouped variables", "definition": "XL2-XC2", "description": "", "templateType": "anything", "can_override": false}, "Rbr2": {"name": "Rbr2", "group": "Ungrouped variables", "definition": "R2", "description": "", "templateType": "anything", "can_override": false}, "Zbr2": {"name": "Zbr2", "group": "Ungrouped variables", "definition": "Rbr2+i*Xbr2", "description": "", "templateType": "anything", "can_override": false}, "Ibr2": {"name": "Ibr2", "group": "Ungrouped variables", "definition": "Vs/Zbr2", "description": "", "templateType": "anything", "can_override": false}, "Is": {"name": "Is", "group": "Ungrouped variables", "definition": "Ibr1 + Ibr2", "description": "", "templateType": "anything", "can_override": false}}, "variablesTest": {"condition": "C1 <>0", "maxRuns": 100}, "ungrouped_variables": ["L1", "L2", "C1", "C2", "XC1", "XC2", "Xl1", "Xl2", "Xbr1", "Xbr2", "Rbr1", "Rbr2", "Zbr1", "Zbr2", "Ibr1", "Ibr2", "Is"], "variable_groups": [{"name": "FreqUsedDefinitions", "variables": ["uF"]}, {"name": "Given in question", "variables": ["R1", "L1mH", "C1uF", "f", "Vs", "R2", "L2mH", "C2uF"]}], "functions": {}, "preamble": {"js": "", "css": ""}, "parts": [{"type": "gapfill", "useCustomName": true, "customName": "Branch 1", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "Give units in your answer, e.g. deg, ohm, A, V, H or F
\nCurrent in Branch 1, [[0]] at an angle of [[1]]
", "stepsPenalty": 0, "steps": [{"type": "information", "useCustomName": true, "customName": "Info on Zbr", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "First we must find the reactances of each capacitor and inductor in order to calculate the total reactance. $X_t=X_L-X_C$
\nAnd then in the usual way determine the impedence of branch 1. $Z_t=R+jX_t$
\n\n"}, {"type": "engineering-answer", "useCustomName": true, "customName": "Zbr1-mag", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "The magnitude is (give units)
", "settings": {"correctAnswer": "qty(abs(Zbr1),'ohm')", "right": "2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": true, "customName": "Zbr1-ph", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "Phase is
", "settings": {"correctAnswer": "qty(arg(Zbr1)*(180/pi),'deg')", "right": "2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "information", "useCustomName": true, "customName": "OhmsLaw", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "Then determine the current. The voltage accross the branch is teh same as the srouce voltage so we can say
\n$Ibranch = Vs/Zbranch$
"}], "gaps": [{"type": "engineering-answer", "useCustomName": true, "customName": "Ibranch1- mag", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "qty(abs(Ibr1),'A')", "right": "2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": true, "customName": "Ibranch1- ph", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "qty(arg(Ibr1)*(180/pi),'deg')", "right": "2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}], "sortAnswers": false}, {"type": "gapfill", "useCustomName": true, "customName": "Branch 2", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "Give units in your answer, e.g. deg, ohm, A, V, H or F
\nCurrent in Branch 2, [[0]] at an angle of [[1]]
", "stepsPenalty": 0, "steps": [{"type": "information", "useCustomName": true, "customName": "Z of branch", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "First we must find the reactances of each capacitor and inductor in order to calculate the total reactance. $X_t=X_L-X_C$
\nAnd then in the usual way determine the impedence of branch 1. $Z_t=R+jX_t$
"}, {"type": "engineering-answer", "useCustomName": true, "customName": "Zbr2-mag", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "First we must find the reactances of each capacitor and inductor. calculate the total reactance. And then in the usual way determine the impedence of branch 2.
\nThe magnitude is (give units)
", "settings": {"correctAnswer": "qty(abs(Zbr1),'ohm')", "right": "2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": true, "customName": "Zbr1-ph", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "First we must find the reactances of each capacitor and inductor. calculate the total reactance. And then in the usual way determine the impedence of branch 2.
\nThe phase is (give units)
", "settings": {"correctAnswer": "qty(arg(Zbr1)*(180/pi),'ohm')", "right": "2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "information", "useCustomName": true, "customName": "Ohms Law", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "Then determine the current. The voltage accross the branch is teh same as the srouce voltage so we can say
\n$Ibranch = Vs/Zbranch$
"}], "gaps": [{"type": "engineering-answer", "useCustomName": true, "customName": "Ibranch2- mag", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "qty(abs(Ibr2),'A')", "right": "2", "close": "5", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": true, "customName": "Ibranch2- ph", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "qty(arg(Ibr2)*(180/pi),'deg')", "right": "2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}], "sortAnswers": false}, {"type": "gapfill", "useCustomName": true, "customName": "Source Current", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "(Include units in your answer e.g. 9.99 ohm, 9.99 A, 9.99 V and 99.9 deg) The magnitude, $|Is|$ = [[0]] at an angle of [[1]]
", "stepsPenalty": 0, "steps": [{"type": "information", "useCustomName": true, "customName": "1. Hint", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "There are two ways to find the current here.
\nMethod 1: In a parrallel circuit, the current comes out of the souce and splits some going through Branch1 and the rest goes through branch2. So we have $I_s=I_{branch1} + I_{branch2}$. Of course we have to remember that these currents are all complex and have a magnitude and phase.
\nMethod 2: Find the total impedance of the two branches by $1/Z_{total}=1/Z_{branch1} + 1/Z_{branch2}$ and hence, use ohms law to find $I_s=V_s/Z_{total}$
\nIn this case, since we have already found $I_{branch1}$ and $ I_{branch2}$, it is quickest just to add them.
"}], "gaps": [{"type": "engineering-answer", "useCustomName": true, "customName": "Is Mag", "marks": "5", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "qty(abs(Is),'A')", "right": "2", "close": "5", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": true, "customName": "Is Deg", "marks": "5", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "qty(arg(Is)*(180/pi),'ohm')", "right": "2", "close": "5", "C1": "75", "C2": "50", "C3": "25"}}], "sortAnswers": false}], "partsMode": "all", "maxMarks": 0, "objectives": [], "penalties": [], "objectiveVisibility": "always", "penaltyVisibility": "always", "type": "question", "contributors": [{"name": "William Haynes", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/2530/"}, {"name": "Judy Rea", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/8753/"}], "resources": []}]}], "contributors": [{"name": "William Haynes", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/2530/"}, {"name": "Judy Rea", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/8753/"}]}