Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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)