Exemplo n.º 1
0
 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)  
Exemplo n.º 2
0
 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)  
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
 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)      
Exemplo n.º 5
0
 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, [])      
Exemplo n.º 6
0
 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)
Exemplo n.º 7
0
  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)
Exemplo n.º 8
0
  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)
Exemplo n.º 9
0
 def generateProblem(self, type = 'mc'):
   ModelProblem.generateProblem(self, type)
   self.variableValues[self.expr].value = self.displayExpr(self.variableValues[self.expr].value)
Exemplo n.º 10
0
 def __init__(self, varDomains):
   def answer(expr, eval):
     return self.evalExpr(expr) - eval
   distractorEquationSets = []
   answerEquationSets = [answer]
   ModelProblem.__init__(self, varDomains, answerEquationSets, distractorEquationSets)