def __init__(self, varDomains): def answer(amount1, quantity1, amount2, quantity2): return amount1 * quantity2 - amount2 * quantity1 answerEquationSets = [answer] def distractor(amount1, quantity1, amount2, quantity2): return amount1 * quantity1 - amount2 * quantity2 distractorEquationSets = [distractor] ModelProblem.__init__(self, varDomains, answerEquationSets, distractorEquationSets)
def __init__(self, varDomains): def answer(time1, quantity1, time2, quantity2): return time1 * quantity1 - time2 * quantity2 answerEquationSets = [answer] def distractor(time1, quantity1, time2, quantity2): return time1 * quantity2 - time2 * quantity1 distractorEquationSets = [distractor] ModelProblem.__init__(self, varDomains, answerEquationSets, distractorEquationSets)
def __init__(self, varDomains): def answer(num1, num2, gcd): return gcd - igcd(num1, num2) answerEquationSets = [answer] def distractor1(num1, num2, gcd): return gcd - ilcm(num1, num2) def distractor2(num1, num2, gcd): return gcd - num1 * num2 distractorEquationSets = [distractor1, distractor2] ModelProblem.__init__(self, varDomains, answerEquationSets, distractorEquationSets)
def __init__(self, varDomains): def answer(num1, num2, lcm): return lcm - ilcm(num1, num2) answerEquationSets = [answer] # give choices: lcm, gcd, product, product - num1 ,gcd + num2 -1, random def distractor1(num1, num2, lcm): return lcm - igcd(num1, num2) def distractor2(num1, num2, lcm): return lcm - num1 * num2 def distractor3(num1, num2, lcm): return lcm - num1 * num2 - num1 def distractor4(num1, num2, lcm): return lcm - num2 + igcd(num1,num2) - 1 distractorEquationSets = [distractor1, distractor2, distractor3, distractor4] ModelProblem.__init__(self, varDomains, answerEquationSets, distractorEquationSets)
def __init__(self, varDomains): lcmVarDomains = { LcmProblem.num1 : varDomains[self.num1] + self.varDomains[self.num1], LcmProblem.num2 : varDomains[self.num2] + self.varDomains[self.num2], LcmProblem.lcm : LcmProblem.varDomains[LcmProblem.lcm], } self.lcmProblem = LcmProblem(lcmVarDomains) gcdVarDomains = { GcdProblem.num1 : LcmProblem.varDomains[LcmProblem.lcm], GcdProblem.num2 : varDomains[self.num3] + self.varDomains[self.num3] , GcdProblem.gcd : self.varDomains[self.lcmgcd], } self.gcdProblem = GcdProblem(gcdVarDomains) answerEquationSets = [] ModelProblem.__init__(self, varDomains, answerEquationSets, [])
def generateProblem(self, type = 'mc'): self.variableValues[self.num1].binding = (self.lcmProblem, self.lcmProblem.num1) self.variableValues[self.num2].binding = (self.lcmProblem, self.lcmProblem.num2) self.variableValues[self.num3].binding = (self.gcdProblem, self.gcdProblem.num2) self.gcdProblem.variableValues[self.gcdProblem.num1].binding = (self.lcmProblem, self.lcmProblem.lcm) self.variableValues[self.lcmgcd].binding = (self.gcdProblem, self.gcdProblem.gcd) return ModelProblem.generateProblem(self, type)
def get(self): domainType = self.request.get('domain', default_value='whole') questionType = self.request.get('type', default_value='mc') highlightAnswer = int(self.request.get('answermode', default_value='1')) syllabus = self.request.get('syllabus', default_value='BODMAS rule') domain = Domain.defaultDomain(Domain.externalToInternalType(domainType)) syllabusUnits = SyllabusUnit.all().filter("name = ", syllabus) knowledgeUnits = [s.knowledgeUnit for s in syllabusUnits] modelProblems = ModelProblem.findModelProblemsMatchingKnowledgeUnits(knowledgeUnits) problems = [] tags = self.request.get_all("tag") numquestions = int(self.request.get('numquestions', default_value=3)) outputFormat = self.request.get('format', default_value='json') self.html_form = 'html/quiz.html' if outputFormat == 'html' else 'html/quiz.json' # At least one tag must match while len(problems) < numquestions: problem = GenerateQuestionForModelProblems(modelProblems, domain, tags, questionType, highlightAnswer, outputFormat) logging.info("Num problems generated = " + str(len(problems))) if problem: problems.append(problem) self.template_values = { 'problems' : problems, } FormHandler.get(self)
def get(self): current_user = users.get_current_user() user = User.retrieve(User, current_user.nickname()) # session = sessions.Session(writer = "cookie") domainType = user.domainType questionType = user.questionType if not user.answermode: user.answermode = '1' highlightAnswer = int(self.request.get('answermode', default_value=user.answermode)) domain = Domain.defaultDomain(Domain.externalToInternalType(domainType)) syllabusUnits = db.get(user.syllabusUnitKeys) knowledgeUnits = [s.knowledgeUnit for s in syllabusUnits] modelProblems = ModelProblem.findModelProblemsMatchingKnowledgeUnits(knowledgeUnits) problems = [] tags = self.request.get_all("tag") numquestions = int(self.request.get('numquestions', default_value=user.numquestions)) format = self.request.get('format', default_value='html') self.html_form = 'html/quiz.html' if format == 'html' else 'html/quiz.txt' # Allows sub-selection of templates by matching tags. # At least one tag must match while len(problems) < numquestions: problem = GenerateQuestionForModelProblems(modelProblems, domain, tags, questionType, highlightAnswer, format) if problem: problems.append(problem) self.template_values = { 'problems' : problems, } FormHandler.get(self)
def generateProblem(self, type = 'mc'): ModelProblem.generateProblem(self, type) self.variableValues[self.expr].value = self.displayExpr(self.variableValues[self.expr].value)
def __init__(self, varDomains): def answer(expr, eval): return self.evalExpr(expr) - eval distractorEquationSets = [] answerEquationSets = [answer] ModelProblem.__init__(self, varDomains, answerEquationSets, distractorEquationSets)