def addProblem(self, problem): name = self.getNextLine(problem) type = self.getNextLine(problem) currentAnswer = self.getNextLine(problem) #answer="" answer = currentAnswer figures = [] currentFigure = None currentObject = None options = ["1", "2", "3", "4", "5", "6"] line = self.getNextLine(problem) while not line == "": if not line.startswith("\t"): #if self.tryParseInt(line): # i=random.randint(0,len(options)-1) # if currentAnswer==line: # answer=options[i] # line=options[i] # options.remove(options[i]) newFigure = RavensFigure(line) figures.append(newFigure) currentFigure = newFigure elif not line.startswith("\t\t"): line = line.replace("\t", "") newObject = RavensObject(line) currentFigure.getObjects().append(newObject) currentObject = newObject elif line.startswith("\t\t"): line = line.replace("\t", "") split = re.split(":", line) newAttribute = RavensAttribute(split[0], split[1]) currentObject.getAttributes().append(newAttribute) line = self.getNextLine(problem) newProblem = RavensProblem(name, type, answer) for figure in figures: newProblem.getFigures()[figure.getName()] = figure self.problems.append(newProblem)
def addProblem(self, problem): name = self.getNextLine(problem) type = self.getNextLine(problem) currentAnswer = self.getNextLine(problem) #answer="" answer=currentAnswer figures=[] currentFigure=None currentObject=None options=["1","2","3","4","5","6"] line = self.getNextLine(problem) while not line=="": if not line.startswith("\t"): #if self.tryParseInt(line): # i=random.randint(0,len(options)-1) # if currentAnswer==line: # answer=options[i] # line=options[i] # options.remove(options[i]) newFigure=RavensFigure(line) figures.append(newFigure) currentFigure=newFigure elif not line.startswith("\t\t"): line=line.replace("\t","") newObject=RavensObject(line) currentFigure.getObjects().append(newObject) currentObject=newObject elif line.startswith("\t\t"): line=line.replace("\t","") split=re.split(":",line) newAttribute=RavensAttribute(split[0],split[1]) currentObject.getAttributes().append(newAttribute) line=self.getNextLine(problem) newProblem = RavensProblem(name, type, answer) for figure in figures: newProblem.getFigures()[figure.getName()]=figure self.problems.append(newProblem)
def loadProblem(self, problemName): r = open("Problems" + os.sep + self.name + os.sep + problemName + os.sep + "ProblemData.txt") problemType=self.getNextLine(r) correctAnswer=int(self.getNextLine(r)) hasVisual=self.getNextLine(r)=="true" hasVerbal=self.getNextLine(r)=="true" newProblem=RavensProblem(problemName, problemType, correctAnswer, hasVisual, hasVerbal) if newProblem.hasVerbal: figures=[] currentFigure=None currentObject=None line = self.getNextLine(r) while not line=="": if not line.startswith("\t"): newFigure=RavensFigure(line, problemName, self.name) figures.append(newFigure) currentFigure=newFigure elif not line.startswith("\t\t"): line=line.replace("\t","") newObject=RavensObject(line) #currentFigure.objects[line]=RavensObject(line) currentFigure.objects[line]=newObject currentObject=newObject elif line.startswith("\t\t"): line=line.replace("\t","") split=re.split(":",line) currentObject.attributes[split[0]]=split[1] line=self.getNextLine(r) for figure in figures: newProblem.figures[figure.name]=figure else: newProblem.figures["A"]=RavensFigure("A", problemName, self.name) newProblem.figures["B"]=RavensFigure("B", problemName, self.name) newProblem.figures["C"]=RavensFigure("C", problemName, self.name) newProblem.figures["1"]=RavensFigure("1", problemName, self.name) newProblem.figures["2"]=RavensFigure("2", problemName, self.name) newProblem.figures["3"]=RavensFigure("3", problemName, self.name) newProblem.figures["4"]=RavensFigure("4", problemName, self.name) newProblem.figures["5"]=RavensFigure("5", problemName, self.name) newProblem.figures["6"]=RavensFigure("6", problemName, self.name) if newProblem.problemType=="3x3": newProblem.figures["D"]=RavensFigure("D", problemName, self.name) newProblem.figures["E"]=RavensFigure("E", problemName, self.name) newProblem.figures["F"]=RavensFigure("F", problemName, self.name) newProblem.figures["G"]=RavensFigure("G", problemName, self.name) newProblem.figures["H"]=RavensFigure("H", problemName, self.name) newProblem.figures["7"]=RavensFigure("7", problemName, self.name) newProblem.figures["8"]=RavensFigure("8", problemName, self.name) self.problems.append(newProblem)
def loadProblem(self, problemName): r = open("Problems" + os.sep + self.name + os.sep + problemName + os.sep + "ProblemData.txt") problemType = self.getNextLine(r) correctAnswer = int(self.getNextLine(r)) hasVisual = self.getNextLine(r) == "true" hasVerbal = self.getNextLine(r) == "true" newProblem = RavensProblem(problemName, problemType, correctAnswer, hasVisual, hasVerbal) if newProblem.hasVerbal: figures = [] currentFigure = None currentObject = None line = self.getNextLine(r) while not line == "": if not line.startswith("\t"): newFigure = RavensFigure(line, problemName, self.name) figures.append(newFigure) currentFigure = newFigure elif not line.startswith("\t\t"): line = line.replace("\t", "") newObject = RavensObject(line) currentFigure.objects[line] = newObject currentObject = newObject elif line.startswith("\t\t"): line = line.replace("\t", "") split = re.split(":", line) currentObject.attributes[split[0]] = split[1] line = self.getNextLine(r) for figure in figures: newProblem.figures[figure.name] = figure else: newProblem.figures["A"] = RavensFigure("A", problemName, self.name) newProblem.figures["B"] = RavensFigure("B", problemName, self.name) newProblem.figures["C"] = RavensFigure("C", problemName, self.name) newProblem.figures["1"] = RavensFigure("1", problemName, self.name) newProblem.figures["2"] = RavensFigure("2", problemName, self.name) newProblem.figures["3"] = RavensFigure("3", problemName, self.name) newProblem.figures["4"] = RavensFigure("4", problemName, self.name) newProblem.figures["5"] = RavensFigure("5", problemName, self.name) newProblem.figures["6"] = RavensFigure("6", problemName, self.name) if newProblem.problemType == "3x3": newProblem.figures["D"] = RavensFigure("D", problemName, self.name) newProblem.figures["E"] = RavensFigure("E", problemName, self.name) newProblem.figures["F"] = RavensFigure("F", problemName, self.name) newProblem.figures["G"] = RavensFigure("G", problemName, self.name) newProblem.figures["H"] = RavensFigure("H", problemName, self.name) newProblem.figures["7"] = RavensFigure("7", problemName, self.name) newProblem.figures["8"] = RavensFigure("8", problemName, self.name) self.problems.append(newProblem)
def solveAs2x2SubProblem(self, problem): subProblem = RavensProblem('Sub Problem', '2x2', problem.correctAnswer, True, True) subProblem.figures['A'] = problem.figures['E'] subProblem.figures['B'] = problem.figures['F'] subProblem.figures['C'] = problem.figures['H'] # Answers subProblem.figures['1'] = problem.figures['1'] subProblem.figures['2'] = problem.figures['2'] subProblem.figures['3'] = problem.figures['3'] subProblem.figures['4'] = problem.figures['4'] subProblem.figures['5'] = problem.figures['5'] subProblem.figures['6'] = problem.figures['6'] subProblem.figures['7'] = problem.figures['7'] subProblem.figures['8'] = problem.figures['8'] return self.solve2x2(subProblem, False)