// Numbas version: exam_results_page_options {"name": "Hamming distances", "extensions": [], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "question_groups": [{"pickingStrategy": "all-ordered", "questions": [{"name": "Hamming distances", "tags": [], "metadata": {"description": "
Short question to test encoding some random binary strings using repetition and parity bit. Randomised 5-bit strings.
", "licence": "None specified"}, "statement": "A set of words in $\\mathbb{Z}_2^5$ is described below. You will be asked to encode them, calculate the minimum distance between code words, and describe how many errors can be detected or corrected.
\nEncoding is described as follows:
\nThe set of words is $W = \\{ \\var{binstring1}, \\var{binstring2}, \\var{binstring3}, \\var{binstring4}\\}$.
", "advice": "The minimum distance is the smallest non-zero value of $d(x,y)$ where $x$, $y \\in C$. Call this $m$.
\nIf the minimum distance of the code is $k$, then the code can detect up to $m-1$ errors.
\nIf the minimum distance of the code is $k$, then the code can correct up to $\\lfloor \\frac{m-1}{2} \\rfloor$.
", "rulesets": {}, "extensions": [], "builtin_constants": {"e": true, "pi,\u03c0": true, "i": true}, "constants": [], "variables": {"binstring1": {"name": "binstring1", "group": "Ungrouped variables", "definition": "tobinary(random(16..19))", "description": "", "templateType": "anything", "can_override": false}, "binstring2": {"name": "binstring2", "group": "Ungrouped variables", "definition": "tobinary(random(20..23))", "description": "", "templateType": "anything", "can_override": false}, "binstring3": {"name": "binstring3", "group": "Ungrouped variables", "definition": "tobinary(random(24..27))", "description": "", "templateType": "anything", "can_override": false}, "binstring4": {"name": "binstring4", "group": "Ungrouped variables", "definition": "tobinary(random(28..31))", "description": "", "templateType": "anything", "can_override": false}, "bins1": {"name": "bins1", "group": "Ungrouped variables", "definition": "map(dec(binstring1[k]),k,0..4)", "description": "", "templateType": "anything", "can_override": false}, "bins2": {"name": "bins2", "group": "Ungrouped variables", "definition": "map(dec(binstring2[k]),k,0..4)", "description": "", "templateType": "anything", "can_override": false}, "bins3": {"name": "bins3", "group": "Ungrouped variables", "definition": "map(dec(binstring3[k]),k,0..4)", "description": "", "templateType": "anything", "can_override": false}, "bins4": {"name": "bins4", "group": "Ungrouped variables", "definition": "map(dec(binstring4[k]),k,0..4)", "description": "", "templateType": "anything", "can_override": false}, "err12": {"name": "err12", "group": "Ungrouped variables", "definition": "sum(map(mod(dec(code1[k])+dec(code2[k]),2),k,0..10))", "description": "", "templateType": "anything", "can_override": false}, "err13": {"name": "err13", "group": "Ungrouped variables", "definition": "sum(map(mod(dec(code1[k])+dec(code3[k]),2),k,0..10))", "description": "", "templateType": "anything", "can_override": false}, "err14": {"name": "err14", "group": "Ungrouped variables", "definition": "sum(map(mod(dec(code1[k])+dec(code4[k]),2),k,0..10))", "description": "", "templateType": "anything", "can_override": false}, "err23": {"name": "err23", "group": "Ungrouped variables", "definition": "sum(map(mod(dec(code2[k])+dec(code3[k]),2),k,0..10))", "description": "", "templateType": "anything", "can_override": false}, "err24": {"name": "err24", "group": "Ungrouped variables", "definition": "sum(map(mod(dec(code2[k])+dec(code4[k]),2),k,0..10))", "description": "", "templateType": "anything", "can_override": false}, "err34": {"name": "err34", "group": "Ungrouped variables", "definition": "sum(map(mod(dec(code3[k])+dec(code4[k]),2),k,0..10))", "description": "", "templateType": "anything", "can_override": false}, "minerror": {"name": "minerror", "group": "Ungrouped variables", "definition": "min(errors)", "description": "", "templateType": "anything", "can_override": false}, "errors": {"name": "errors", "group": "Ungrouped variables", "definition": "[err12,err13,err14,err23,err24,err34]", "description": "", "templateType": "anything", "can_override": false}, "detect": {"name": "detect", "group": "Ungrouped variables", "definition": "if(minerror-1 < 0, 0, minerror -1)", "description": "", "templateType": "anything", "can_override": false}, "correct": {"name": "correct", "group": "Ungrouped variables", "definition": "if((minerror-1) < 0, 0, floor((minerror-1)/2))", "description": "", "templateType": "anything", "can_override": false}, "code1": {"name": "code1", "group": "Ungrouped variables", "definition": "bins1 + bins1 + par12", "description": "", "templateType": "anything", "can_override": false}, "code2": {"name": "code2", "group": "Ungrouped variables", "definition": "bins2 + bins2 + par22", "description": "", "templateType": "anything", "can_override": false}, "code3": {"name": "code3", "group": "Ungrouped variables", "definition": "bins3 + bins3 + par32", "description": "", "templateType": "anything", "can_override": false}, "code4": {"name": "code4", "group": "Ungrouped variables", "definition": "bins4 + bins4 + par42", "description": "", "templateType": "anything", "can_override": false}, "par12": {"name": "par12", "group": "Ungrouped variables", "definition": "mod(sum(bins1),2)", "description": "", "templateType": "anything", "can_override": false}, "par22": {"name": "par22", "group": "Ungrouped variables", "definition": "mod(sum(bins2),2)", "description": "", "templateType": "anything", "can_override": false}, "par32": {"name": "par32", "group": "Ungrouped variables", "definition": "mod(sum(bins3),2)", "description": "", "templateType": "anything", "can_override": false}, "par42": {"name": "par42", "group": "Ungrouped variables", "definition": "mod(sum(bins4),2)", "description": "", "templateType": "anything", "can_override": false}, "codes1": {"name": "codes1", "group": "Ungrouped variables", "definition": "map(string(code1[k]),k,0..10)", "description": "", "templateType": "anything", "can_override": false}, "codeword1": {"name": "codeword1", "group": "Ungrouped variables", "definition": "codes1[0] + codes1[1] + codes1[2] + codes1[3] + codes1[4] + codes1[5] + codes1[6] + codes1[7] + codes1[8] + codes1[9] + codes1[10]", "description": "", "templateType": "anything", "can_override": false}, "codeword2": {"name": "codeword2", "group": "Ungrouped variables", "definition": "codes2[0] + codes2[1] + codes2[2] + codes2[3] + codes2[4] + codes2[5] + codes2[6] + codes2[7] + codes2[8] + codes2[9] + codes2[10]", "description": "", "templateType": "anything", "can_override": false}, "codes2": {"name": "codes2", "group": "Ungrouped variables", "definition": "map(string(code2[k]),k,0..10)", "description": "", "templateType": "anything", "can_override": false}, "codes3": {"name": "codes3", "group": "Ungrouped variables", "definition": "map(string(code3[k]),k,0..10)", "description": "", "templateType": "anything", "can_override": false}, "codes4": {"name": "codes4", "group": "Ungrouped variables", "definition": "map(string(code4[k]),k,0..10)", "description": "", "templateType": "anything", "can_override": false}, "codeword3": {"name": "codeword3", "group": "Ungrouped variables", "definition": "codes3[0] + codes3[1] + codes3[2] + codes3[3] + codes3[4] + codes3[5] + codes3[6] + codes3[7] + codes3[8] + codes3[9] + codes3[10]", "description": "", "templateType": "anything", "can_override": false}, "codeword4": {"name": "codeword4", "group": "Ungrouped variables", "definition": "codes4[0] + codes4[1] + codes4[2] + codes4[3] + codes4[4] + codes4[5] + codes4[6] + codes4[7] + codes4[8] + codes4[9] + codes4[10]", "description": "", "templateType": "anything", "can_override": false}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["binstring1", "binstring2", "binstring3", "binstring4", "bins1", "bins2", "bins3", "bins4", "err12", "err13", "err14", "err23", "err24", "err34", "minerror", "errors", "detect", "correct", "code1", "code2", "code3", "code4", "par12", "par22", "par32", "par42", "codes1", "codes2", "codes3", "codes4", "codeword1", "codeword2", "codeword3", "codeword4"], "variable_groups": [], "functions": {}, "preamble": {"js": "", "css": ""}, "parts": [{"type": "patternmatch", "useCustomName": false, "customName": "", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "Encode $\\var{binstring1}$.
", "answer": "{codeword1}", "displayAnswer": "", "matchMode": "exact"}, {"type": "patternmatch", "useCustomName": false, "customName": "", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "Encode $\\var{binstring2}$.
", "answer": "{codeword2}", "displayAnswer": "", "matchMode": "exact"}, {"type": "patternmatch", "useCustomName": false, "customName": "", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "Encode $\\var{binstring3}$.
", "answer": "{codeword3}", "displayAnswer": "", "matchMode": "exact"}, {"type": "patternmatch", "useCustomName": false, "customName": "", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "Encode $\\var{binstring4}$.
", "answer": "{codeword4}", "displayAnswer": "", "matchMode": "exact"}, {"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, "prompt": "What is the minimum distance between these code words? (The code words are the $11$-bit binary strings you have just found.)
", "minValue": "{minerror}", "maxValue": "{minerror}", "correctAnswerFraction": false, "allowFractions": false, "mustBeReduced": false, "mustBeReducedPC": 0, "showFractionHint": true, "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain"}, {"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, "prompt": "How many errors can this code detect?
", "minValue": "{detect}", "maxValue": "{detect}", "correctAnswerFraction": false, "allowFractions": false, "mustBeReduced": false, "mustBeReducedPC": 0, "showFractionHint": true, "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain"}, {"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, "prompt": "How many errors can this code correct?
", "minValue": "{correct}", "maxValue": "{correct}", "correctAnswerFraction": false, "allowFractions": false, "mustBeReduced": false, "mustBeReducedPC": 0, "showFractionHint": true, "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain"}], "partsMode": "all", "maxMarks": 0, "objectives": [], "penalties": [], "objectiveVisibility": "always", "penaltyVisibility": "always", "contributors": [{"name": "Alexander Corner", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/5328/"}]}]}], "contributors": [{"name": "Alexander Corner", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/5328/"}]}