// Numbas version: exam_results_page_options {"name": "Sharon's copy of Custom marking - answer is a set", "extensions": [], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false}, "question_groups": [{"pickingStrategy": "all-ordered", "questions": [{"ungrouped_variables": ["f", "ea", "odds", "det", "ec", "eb", "qb", "x0", "x1", "roots"], "functions": {}, "extensions": [], "parts": [{"expectedvariablenames": [], "vsetrangepoints": 5, "showFeedbackIcon": true, "scripts": {"constructor": {"order": "after", "script": "//get variables \nvar variables = this.question.scope.variables;\nvar unwrap = Numbas.jme.unwrapValue;\n\n// get the roots of the equation\nvar roots = unwrap(variables.roots);\nconsole.log(roots);\n\n\n\n\n"}, "validate": {"order": "instead", "script": "// Use the built-in validation function to catch syntax errors and so on\nif(!Numbas.parts.JMEPart.prototype.validate.apply(this)) {\n return false;\n}\n// Give a warning if the student's answer is not a list\nif(this.notAList) {\n this.giveWarning('You must enter a list, i.e. numbers separated by commas and enclosed by square brackets. For example, `[1,2]`.');\n return false;\n}\nreturn true;"}, "mark": {"order": "instead", "script": "// evaluate the student's answer\ntry {\n var list = Numbas.jme.evaluate(this.studentAnswer,this.question.scope);\n}\ncatch(e)\n{\n this.setCredit(0,R('part.jme.answer invalid',e.message));\n return;\n}\n\n// check the answer is a list\nthis.notAList = list.type!='list';\nif(this.notAList) {\n this.setCredit(0,'Your answer is not a list of numbers.');\n return;\n}\n\nvar variables = this.question.scope.variables;\nvar unwrap = Numbas.jme.unwrapValue;\n\n// get the roots of the equation\nvar roots = unwrap(variables.roots);\n\n// unwrap the student's list to a Javascript array of numbers\nvar list = unwrap(list);\n\n// get the coefficients of the equation\nvar ea = unwrap(variables.ea);\nvar eb = unwrap(variables.eb);\nvar ec = unwrap(variables.ec);\n\n// check each root the student gave, keeping track of how many they got right\nvar got = 0;\nvar wrong = [];\nfor(var i=0;iroots.length) {\n this.setCredit(0,\"This equation does not have \"+(list.length)+\" real-valued \"+Numbas.util.pluralise(list.length,'root','roots')+\".\");\n} else if(gotGive the set of real-valued roots of the equation

\n

\\[ \\simplify[all,fractionnumbers]{{ea}x^2+{eb}x+{ec}}=0 \\]

\n

Enter your answer as a list of numbers separated by commas and enclosed by square brackets, e.g. `[1,2]`.

\n

If the equation has no roots, enter `[]`

", "variableReplacementStrategy": "originalfirst", "marks": 2, "checkingaccuracy": 0.001}], "advice": "", "metadata": {"licence": "Creative Commons Attribution 4.0 International", "description": ""}, "rulesets": {}, "statement": "", "name": "Sharon's copy of Custom marking - answer is a set", "variablesTest": {"condition": "", "maxRuns": 100}, "tags": [], "variables": {"det": {"group": "Ungrouped variables", "templateType": "anything", "definition": "random(0..3)*random(1,i)", "description": "", "name": "det"}, "qb": {"group": "Ungrouped variables", "templateType": "anything", "definition": "random(-3..3)", "description": "", "name": "qb"}, "ea": {"group": "Ungrouped variables", "templateType": "anything", "definition": "f", "description": "", "name": "ea"}, "f": {"group": "Ungrouped variables", "templateType": "anything", "definition": "if(odds=0,1,4)", "description": "", "name": "f"}, "x0": {"group": "Ungrouped variables", "templateType": "anything", "definition": "(-qb+det)/2", "description": "", "name": "x0"}, "x1": {"group": "Ungrouped variables", "templateType": "anything", "definition": "(-qb-det)/2", "description": "", "name": "x1"}, "ec": {"group": "Ungrouped variables", "templateType": "anything", "definition": "x0*x1*f", "description": "", "name": "ec"}, "roots": {"group": "Ungrouped variables", "templateType": "anything", "definition": "if(im(det)<>0,[],if(det=0,[x0],[x0,x1]))", "description": "", "name": "roots"}, "eb": {"group": "Ungrouped variables", "templateType": "anything", "definition": "-f*(x0+x1)", "description": "", "name": "eb"}, "odds": {"group": "Ungrouped variables", "templateType": "anything", "definition": "mod(im(qb+det),2)+mod(re(qb+det),2)", "description": "", "name": "odds"}}, "variable_groups": [], "preamble": {"css": "", "js": ""}, "type": "question", "contributors": [{"name": "Sharon Gardner", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/1313/"}]}]}], "contributors": [{"name": "Sharon Gardner", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/1313/"}]}