// Numbas version: finer_feedback_settings {"name": "21. HCF and LCM", "metadata": {"description": "
Practice finding factors, HCF and LCM.
", "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": "21.a Find common factors of two numbers", "extensions": [], "custom_part_types": [{"source": {"pk": 2, "author": {"name": "Christian Lawson-Perfect", "pk": 7}, "edit_page": "/part_type/2/edit"}, "name": "List of numbers", "short_name": "list-of-numbers", "description": "The answer is a comma-separated list of numbers.
\nThe list is marked correct if each number occurs the same number of times as in the expected answer, and no extra numbers are present.
\nYou can optionally treat the answer as a set, so the number of occurrences doesn't matter, only whether each number is included or not.
", "help_url": "", "input_widget": "string", "input_options": {"correctAnswer": "join(\n if(settings[\"correctAnswerFractions\"],\n map(let([a,b],rational_approximation(x), string(a/b)),x,settings[\"correctAnswer\"])\n ,\n settings[\"correctAnswer\"]\n ),\n settings[\"separator\"] + \" \"\n)", "hint": {"static": false, "value": "if(settings[\"show_input_hint\"],\n \"Enter a list of numbers separated by{settings['separator']}.\",\n \"\"\n)"}, "allowEmpty": {"static": true, "value": true}}, "can_be_gap": true, "can_be_step": true, "marking_script": "bits:\nlet(b,filter(x<>\"\",x,split(studentAnswer,settings[\"separator\"])),\n if(isSet,list(set(b)),b)\n)\n\nexpected_numbers:\nlet(l,settings[\"correctAnswer\"] as \"list\",\n if(isSet,list(set(l)),l)\n)\n\nvalid_numbers:\nif(all(map(not isnan(x),x,interpreted_answer)),\n true,\n let(index,filter(isnan(interpreted_answer[x]),x,0..len(interpreted_answer)-1)[0], wrong, bits[index],\n warn(wrong+\" is not a valid number\");\n fail(wrong+\" is not a valid number.\")\n )\n )\n\nis_sorted:\nassert(sort(interpreted_answer)=interpreted_answer,\n multiply_credit(0.5,\"Not in order\")\n )\n\nincluded:\nmap(\n let(\n num_student,len(filter(x=y,y,interpreted_answer)),\n num_expected,len(filter(x=y,y,expected_numbers)),\n switch(\n num_student=num_expected,\n true,\n num_studentIs every number in the student's list valid?
", "definition": "if(all(map(not isnan(x),x,interpreted_answer)),\n true,\n let(index,filter(isnan(interpreted_answer[x]),x,0..len(interpreted_answer)-1)[0], wrong, bits[index],\n warn(wrong+\" is not a valid number\");\n fail(wrong+\" is not a valid number.\")\n )\n )"}, {"name": "is_sorted", "description": "Are the student's answers in ascending order?
", "definition": "assert(sort(interpreted_answer)=interpreted_answer,\n multiply_credit(0.5,\"Not in order\")\n )"}, {"name": "included", "description": "Is each number in the expected answer present in the student's list the correct number of times?
", "definition": "map(\n let(\n num_student,len(filter(x=y,y,interpreted_answer)),\n num_expected,len(filter(x=y,y,expected_numbers)),\n switch(\n num_student=num_expected,\n true,\n num_studentTrue if the student's list doesn't contain any numbers that aren't in the expected answer.
", "definition": "if(all(map(x in expected_numbers, x, interpreted_answer)),\n true\n ,\n incorrect(\"Your answer contains \"+extra_numbers[0]+\" but should not.\");\n false\n )"}, {"name": "interpreted_answer", "description": "A value representing the student's answer to this part.", "definition": "if(lower(studentAnswer) in [\"empty\",\"\u2205\"],[],\n map(\n if(settings[\"allowFractions\"],parsenumber_or_fraction(x,notationStyles), parsenumber(x,notationStyles))\n ,x\n ,bits\n )\n)"}, {"name": "mark", "description": "This is the main marking note. It should award credit and provide feedback based on the student's answer.", "definition": "if(studentanswer=\"\",fail(\"You have not entered an answer\"),false);\napply(valid_numbers);\napply(included);\napply(no_extras);\ncorrectif(all_included and no_extras)"}, {"name": "notationStyles", "description": "", "definition": "[\"en\"]"}, {"name": "isSet", "description": "Should the answer be considered as a set, so the number of times an element occurs doesn't matter?
", "definition": "settings[\"isSet\"]"}, {"name": "extra_numbers", "description": "Numbers included in the student's answer that are not in the expected list.
", "definition": "filter(not (x in expected_numbers),x,interpreted_answer)"}], "settings": [{"name": "correctAnswer", "label": "Correct answer", "help_url": "", "hint": "The list of numbers that the student should enter. The order does not matter.", "input_type": "code", "default_value": "", "evaluate": true}, {"name": "allowFractions", "label": "Allow the student to enter fractions?", "help_url": "", "hint": "", "input_type": "checkbox", "default_value": false}, {"name": "correctAnswerFractions", "label": "Display the correct answers as fractions?", "help_url": "", "hint": "", "input_type": "checkbox", "default_value": false}, {"name": "isSet", "label": "Is the answer a set?", "help_url": "", "hint": "If ticked, the number of times an element occurs doesn't matter, only whether it's included at all.", "input_type": "checkbox", "default_value": false}, {"name": "show_input_hint", "label": "Show the input hint?", "help_url": "", "hint": "", "input_type": "checkbox", "default_value": true}, {"name": "separator", "label": "Separator", "help_url": "", "hint": "The substring that should separate items in the student's list", "input_type": "string", "default_value": ",", "subvars": false}], "public_availability": "always", "published": true, "extensions": []}], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "contributors": [{"name": "Mash Sheffield", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/4679/"}, {"name": "Andrew Neate", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/21832/"}], "tags": [], "metadata": {"description": "Find the common factors of two numbers
", "licence": "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International"}, "statement": "List the common factors of $\\var{x}$ and $\\var{y}$.
", "advice": "First work out what the factors of $\\var{x}$ and $\\var{y}$ are. The factors for $\\var{x}$ are:
\n\\[\\var{DisplayXFactors}\\]
\nand the factors for $\\var{y}$ are:
\n\\[\\var{DisplayYFactors}.\\]
\nThe common factors are thoses which appear in both lists.
", "rulesets": {}, "builtin_constants": {"e": true, "pi,\u03c0": true, "i": true, "j": false}, "constants": [], "variables": {"x": {"name": "x", "group": "Ungrouped variables", "definition": "random(2..70)", "description": "", "templateType": "anything", "can_override": false}, "y": {"name": "y", "group": "Ungrouped variables", "definition": "random(2..70)", "description": "", "templateType": "anything", "can_override": false}, "CommonFactors": {"name": "CommonFactors", "group": "Ungrouped variables", "definition": "intersection(set(divisors(x)),set(divisors(y)))", "description": "", "templateType": "anything", "can_override": false}, "test": {"name": "test", "group": "Ungrouped variables", "definition": "foldl((total, x) -> total + x, \"\", [\"a\",\"b\",\"c\"])", "description": "", "templateType": "anything", "can_override": false}, "XFactors": {"name": "XFactors", "group": "Ungrouped variables", "definition": "if(x=1,\"1\",\", \"+string(x)) for: x of:divisors(x)", "description": "", "templateType": "anything", "can_override": false}, "YFactors": {"name": "YFactors", "group": "Ungrouped variables", "definition": "if(x=1,\"1\",\", \"+string(x)) for: x of:divisors(y)", "description": "", "templateType": "anything", "can_override": false}, "DisplayXFactors": {"name": "DisplayXFactors", "group": "Ungrouped variables", "definition": "foldl((total, x) -> total + x, \"\", XFactors)", "description": "", "templateType": "anything", "can_override": false}, "DisplayYFactors": {"name": "DisplayYFactors", "group": "Ungrouped variables", "definition": "foldl((total, x) -> total + x, \"\", YFactors)", "description": "", "templateType": "anything", "can_override": false}}, "variablesTest": {"condition": "len(CommonFactors)>1 && x<>y && len(CommonFactors)<4", "maxRuns": 100}, "ungrouped_variables": ["x", "y", "CommonFactors", "test", "XFactors", "YFactors", "DisplayXFactors", "DisplayYFactors"], "variable_groups": [], "functions": {}, "preamble": {"js": "", "css": ""}, "parts": [{"type": "list-of-numbers", "useCustomName": false, "customName": "", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "CommonFactors", "allowFractions": false, "correctAnswerFractions": false, "isSet": true, "show_input_hint": true, "separator": ","}}], "partsMode": "all", "maxMarks": 0, "objectives": [], "penalties": [], "objectiveVisibility": "always", "penaltyVisibility": "always"}, {"name": "21.b Find HCF of two numbers", "extensions": [], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "contributors": [{"name": "Mash Sheffield", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/4679/"}, {"name": "Andrew Neate", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/21832/"}], "tags": [], "metadata": {"description": "Find the HCF of two numbers using prime factor decomposition.
", "licence": "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International"}, "statement": "By finding prime factors or otherwise, find the highest common factor of $\\var{x}$ and $\\var{y}$.
", "advice": "One way to work out the highest common factor is to find all factors of both numbers and pick the largest one. A quicker and more consistent method is the following.
\nFirst write each number as a product of prime powers. In this case we have
\n\\[\\var{x}=\\simplify[unitPower]{{DisplayXPrimePowers}}\\]
\n\\[\\var{y}=\\simplify[unitPower]{{DisplayYPrimePowers}}.\\]
\nThe highest common factor is then found by multiplying each prime factor the least number of times it occurs in either $\\var{x}$ or $\\var{y}$. This gives us an answer of $\\text{HCF}(\\var{x},\\var{y})=\\var{HCF}$.
\n\nUse this link to find some resources which will help you revise this topic.
", "rulesets": {}, "builtin_constants": {"e": true, "pi,\u03c0": true, "i": true, "j": false}, "constants": [], "variables": {"x": {"name": "x", "group": "Ungrouped variables", "definition": "random(2..70)", "description": "", "templateType": "anything", "can_override": false}, "y": {"name": "y", "group": "Ungrouped variables", "definition": "random(2..70)", "description": "", "templateType": "anything", "can_override": false}, "CommonFactors": {"name": "CommonFactors", "group": "Ungrouped variables", "definition": "intersection(set(divisors(x)),set(divisors(y)))", "description": "", "templateType": "anything", "can_override": false}, "Primes": {"name": "Primes", "group": "Ungrouped variables", "definition": "[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97]", "description": "", "templateType": "anything", "can_override": false}, "XPrimePowersList": {"name": "XPrimePowersList", "group": "Ungrouped variables", "definition": "string(d[0])+\"^\"+string(d[1]) for: d of: filter(x[1]>0,x,zip(primes,factorise(x)))", "description": "", "templateType": "anything", "can_override": false}, "DisplayXPrimePowers": {"name": "DisplayXPrimePowers", "group": "Ungrouped variables", "definition": "expression(join(XPrimePowersList,\"*\"))", "description": "", "templateType": "anything", "can_override": false}, "HCF": {"name": "HCF", "group": "Ungrouped variables", "definition": "gcd(x,y)", "description": "", "templateType": "anything", "can_override": false}, "YPrimePowersList": {"name": "YPrimePowersList", "group": "Ungrouped variables", "definition": "string(d[0])+\"^\"+string(d[1]) for: d of: filter(x[1]>0,x,zip(primes,factorise(y)))", "description": "", "templateType": "anything", "can_override": false}, "DisplayYPrimePowers": {"name": "DisplayYPrimePowers", "group": "Ungrouped variables", "definition": "expression(join(YPrimePowersList,\"*\"))", "description": "", "templateType": "anything", "can_override": false}}, "variablesTest": {"condition": "len(CommonFactors)>1 && x<>y && len(CommonFactors)<4", "maxRuns": 100}, "ungrouped_variables": ["x", "y", "CommonFactors", "Primes", "XPrimePowersList", "DisplayXPrimePowers", "YPrimePowersList", "DisplayYPrimePowers", "HCF"], "variable_groups": [], "functions": {}, "preamble": {"js": "", "css": ""}, "parts": [{"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": "HCF", "maxValue": "HCF", "correctAnswerFraction": false, "allowFractions": false, "mustBeReduced": false, "mustBeReducedPC": 0, "displayAnswer": "", "showFractionHint": true, "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain"}], "partsMode": "all", "maxMarks": 0, "objectives": [], "penalties": [], "objectiveVisibility": "always", "penaltyVisibility": "always"}, {"name": "21.c LCM of two numbers", "extensions": [], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "contributors": [{"name": "Simon Thomas", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/3148/"}, {"name": "Mash Sheffield", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/4679/"}, {"name": "Andrew Neate", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/21832/"}, {"name": "Will Morgan", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/21933/"}], "tags": [], "metadata": {"description": "Calculating the LCM of two numbers by using prime factorisation.
", "licence": "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International"}, "statement": "By considering the prime factorisation of $\\var{x}$ and $\\var{y}$, or otherwise, find the lowest common multiple (LCM) of $\\var{x}$ and $\\var{y}$.
", "advice": "We can write $\\var{x}$ and $\\var{y}$ as a product of prime factors as follows:
\n$\\var{x}=\\var{show_factors(x)}$
\n$\\var{y}=\\var{show_factors(y)}$.
\n\nFor LCM of $\\var{x}$ and $\\var{y}$ we need to multiply each factor the greatest number of times it occurs in either $\\var{x}$ or $\\var{y}$.
\ni.e. LCM$(x,y) = \\var{show_factors(lcm_xy)}=\\var{lcm_xy}$.
\n\nUse this link to find some resources which will help you revise this topic.
", "rulesets": {}, "builtin_constants": {"e": true, "pi,\u03c0": true, "i": true, "j": false}, "constants": [], "variables": {"x": {"name": "x", "group": "Ungrouped variables", "definition": "random(2..70)", "description": "", "templateType": "anything", "can_override": false}, "y": {"name": "y", "group": "Ungrouped variables", "definition": "random(2..70)", "description": "", "templateType": "anything", "can_override": false}, "lcm_xy": {"name": "lcm_xy", "group": "Ungrouped variables", "definition": "lcm(x,y)", "description": "", "templateType": "anything", "can_override": false}, "primes": {"name": "primes", "group": "Ungrouped variables", "definition": "[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97]", "description": "", "templateType": "anything", "can_override": false}, "XPrimePowersList": {"name": "XPrimePowersList", "group": "Ungrouped variables", "definition": "string(d[0])+\"^\"+string(d[1]) for: d of: filter(x[1]>0,x,zip(primes,factorise(x)))", "description": "", "templateType": "anything", "can_override": false}, "DisplayXPrimePowers": {"name": "DisplayXPrimePowers", "group": "Ungrouped variables", "definition": "expression(join(XPrimePowersList,\"*\"))", "description": "", "templateType": "anything", "can_override": false}, "YPrimePowersList": {"name": "YPrimePowersList", "group": "Ungrouped variables", "definition": "string(d[0])+\"^\"+string(d[1]) for: d of: filter(x[1]>0,x,zip(primes,factorise(y)))", "description": "", "templateType": "anything", "can_override": false}, "DisplayYPrimePowers": {"name": "DisplayYPrimePowers", "group": "Ungrouped variables", "definition": "expression(join(YPrimePowersList,\"*\"))", "description": "", "templateType": "anything", "can_override": false}}, "variablesTest": {"condition": "", "maxRuns": "500"}, "ungrouped_variables": ["primes", "lcm_xy", "x", "y", "XPrimePowersList", "DisplayXPrimePowers", "YPrimePowersList", "DisplayYPrimePowers"], "variable_groups": [], "functions": {"show_factors": {"parameters": [["n", "number"]], "type": "string", "language": "jme", "definition": "latex( // mark the output as a string of raw LaTeX\n join(\n map(\n if(a=1,p,p+'^{'+a+'}'), // when the exponent is 1, return p, otherwise return p^{exponent}\n [p,a],\n filter(x[1]>0,x,zip(primes,factorise(n))) // for all the primes p which are factors of n, return p and its exponent\n ),\n ' \\\\times ' // join all the prime powers up with \\times symbols\n )\n)"}}, "preamble": {"js": "", "css": ""}, "parts": [{"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": "lcm_xy", "maxValue": "lcm_xy", "correctAnswerFraction": false, "allowFractions": false, "mustBeReduced": false, "mustBeReducedPC": 0, "displayAnswer": "", "showFractionHint": true, "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain"}], "partsMode": "all", "maxMarks": 0, "objectives": [], "penalties": [], "objectiveVisibility": "always", "penaltyVisibility": "always"}]}], "allowPrinting": true, "navigation": {"allowregen": true, "reverse": true, "browse": true, "allowsteps": true, "showfrontpage": false, "navigatemode": "sequence", "onleave": {"action": "none", "message": ""}, "preventleave": false, "typeendtoleave": false, "startpassword": "", "autoSubmit": true, "allowAttemptDownload": false, "downloadEncryptionKey": "", "showresultspage": "oncompletion"}, "timing": {"allowPause": false, "timeout": {"action": "none", "message": ""}, "timedwarning": {"action": "none", "message": ""}}, "feedback": {"enterreviewmodeimmediately": true, "showactualmarkwhen": "always", "showtotalmarkwhen": "always", "showanswerstatewhen": "always", "showpartfeedbackmessageswhen": "always", "showexpectedanswerswhen": "inreview", "showadvicewhen": "inreview", "allowrevealanswer": true, "intro": "", "end_message": "", "results_options": {"printquestions": true, "printadvice": true}, "feedbackmessages": [], "reviewshowexpectedanswer": true, "showanswerstate": true, "reviewshowfeedback": true, "showactualmark": true, "showtotalmark": true, "reviewshowscore": true, "reviewshowadvice": true}, "diagnostic": {"knowledge_graph": {"topics": [], "learning_objectives": []}, "script": "diagnosys", "customScript": ""}, "contributors": [{"name": "Mash Sheffield", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/4679/"}, {"name": "Andrew Neate", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/21832/"}], "extensions": [], "custom_part_types": [{"source": {"pk": 2, "author": {"name": "Christian Lawson-Perfect", "pk": 7}, "edit_page": "/part_type/2/edit"}, "name": "List of numbers", "short_name": "list-of-numbers", "description": "The answer is a comma-separated list of numbers.
\nThe list is marked correct if each number occurs the same number of times as in the expected answer, and no extra numbers are present.
\nYou can optionally treat the answer as a set, so the number of occurrences doesn't matter, only whether each number is included or not.
", "help_url": "", "input_widget": "string", "input_options": {"correctAnswer": "join(\n if(settings[\"correctAnswerFractions\"],\n map(let([a,b],rational_approximation(x), string(a/b)),x,settings[\"correctAnswer\"])\n ,\n settings[\"correctAnswer\"]\n ),\n settings[\"separator\"] + \" \"\n)", "hint": {"static": false, "value": "if(settings[\"show_input_hint\"],\n \"Enter a list of numbers separated by{settings['separator']}.\",\n \"\"\n)"}, "allowEmpty": {"static": true, "value": true}}, "can_be_gap": true, "can_be_step": true, "marking_script": "bits:\nlet(b,filter(x<>\"\",x,split(studentAnswer,settings[\"separator\"])),\n if(isSet,list(set(b)),b)\n)\n\nexpected_numbers:\nlet(l,settings[\"correctAnswer\"] as \"list\",\n if(isSet,list(set(l)),l)\n)\n\nvalid_numbers:\nif(all(map(not isnan(x),x,interpreted_answer)),\n true,\n let(index,filter(isnan(interpreted_answer[x]),x,0..len(interpreted_answer)-1)[0], wrong, bits[index],\n warn(wrong+\" is not a valid number\");\n fail(wrong+\" is not a valid number.\")\n )\n )\n\nis_sorted:\nassert(sort(interpreted_answer)=interpreted_answer,\n multiply_credit(0.5,\"Not in order\")\n )\n\nincluded:\nmap(\n let(\n num_student,len(filter(x=y,y,interpreted_answer)),\n num_expected,len(filter(x=y,y,expected_numbers)),\n switch(\n num_student=num_expected,\n true,\n num_studentIs every number in the student's list valid?
", "definition": "if(all(map(not isnan(x),x,interpreted_answer)),\n true,\n let(index,filter(isnan(interpreted_answer[x]),x,0..len(interpreted_answer)-1)[0], wrong, bits[index],\n warn(wrong+\" is not a valid number\");\n fail(wrong+\" is not a valid number.\")\n )\n )"}, {"name": "is_sorted", "description": "Are the student's answers in ascending order?
", "definition": "assert(sort(interpreted_answer)=interpreted_answer,\n multiply_credit(0.5,\"Not in order\")\n )"}, {"name": "included", "description": "Is each number in the expected answer present in the student's list the correct number of times?
", "definition": "map(\n let(\n num_student,len(filter(x=y,y,interpreted_answer)),\n num_expected,len(filter(x=y,y,expected_numbers)),\n switch(\n num_student=num_expected,\n true,\n num_studentTrue if the student's list doesn't contain any numbers that aren't in the expected answer.
", "definition": "if(all(map(x in expected_numbers, x, interpreted_answer)),\n true\n ,\n incorrect(\"Your answer contains \"+extra_numbers[0]+\" but should not.\");\n false\n )"}, {"name": "interpreted_answer", "description": "A value representing the student's answer to this part.", "definition": "if(lower(studentAnswer) in [\"empty\",\"\u2205\"],[],\n map(\n if(settings[\"allowFractions\"],parsenumber_or_fraction(x,notationStyles), parsenumber(x,notationStyles))\n ,x\n ,bits\n )\n)"}, {"name": "mark", "description": "This is the main marking note. It should award credit and provide feedback based on the student's answer.", "definition": "if(studentanswer=\"\",fail(\"You have not entered an answer\"),false);\napply(valid_numbers);\napply(included);\napply(no_extras);\ncorrectif(all_included and no_extras)"}, {"name": "notationStyles", "description": "", "definition": "[\"en\"]"}, {"name": "isSet", "description": "Should the answer be considered as a set, so the number of times an element occurs doesn't matter?
", "definition": "settings[\"isSet\"]"}, {"name": "extra_numbers", "description": "Numbers included in the student's answer that are not in the expected list.
", "definition": "filter(not (x in expected_numbers),x,interpreted_answer)"}], "settings": [{"name": "correctAnswer", "label": "Correct answer", "help_url": "", "hint": "The list of numbers that the student should enter. The order does not matter.", "input_type": "code", "default_value": "", "evaluate": true}, {"name": "allowFractions", "label": "Allow the student to enter fractions?", "help_url": "", "hint": "", "input_type": "checkbox", "default_value": false}, {"name": "correctAnswerFractions", "label": "Display the correct answers as fractions?", "help_url": "", "hint": "", "input_type": "checkbox", "default_value": false}, {"name": "isSet", "label": "Is the answer a set?", "help_url": "", "hint": "If ticked, the number of times an element occurs doesn't matter, only whether it's included at all.", "input_type": "checkbox", "default_value": false}, {"name": "show_input_hint", "label": "Show the input hint?", "help_url": "", "hint": "", "input_type": "checkbox", "default_value": true}, {"name": "separator", "label": "Separator", "help_url": "", "hint": "The substring that should separate items in the student's list", "input_type": "string", "default_value": ",", "subvars": false}], "public_availability": "always", "published": true, "extensions": []}], "resources": []}