Parser of berki style problems and generator of latex file
Samo Penic
2019-02-04 da23b395bf122cc6cf4d33f4b69c6508f8692e75
Added grouping of problems into generation of files
2 files modified
40 ■■■■ changed files
GenerateTests.py 2 ●●●●● patch | view | raw | blame | history
aoi_gen/Exam.py 38 ●●●● patch | view | raw | blame | history
GenerateTests.py
@@ -29,6 +29,8 @@
    text = exam.exam_to_template()
    # print(text)
    exam_matrix = exam.get_answers()
    exam_ids=exam.get_problem_ids()
    print(exam_matrix)
    print(exam_ids)
    with open("preverjanje.tex", "w") as problem_fd:
        problem_fd.write(text)
aoi_gen/Exam.py
@@ -17,8 +17,10 @@
        self.generate_problems()
    def generate_problems(self, reorder=True):
        for problem_source in self.problem_source_list:
            self.problem_list.append(Problem(problem_source))
        for problem in self.problem_source_list:
            shuffle(problem['problems'])
            for i in range(0,problem['amount']):
                self.problem_list.append((problem['problems'][i]['id'], Problem(problem['problems'][i]['parser'])))
        if reorder:
            shuffle(self.problem_list)
@@ -28,7 +30,7 @@
        else:
            text = self.template.start_paper(self.student_id[0], self.student_id[1])
        for i, problem in enumerate(self.problem_list):
        for i, (problem_id, problem) in enumerate(self.problem_list):
            text += self.template.put_problem_into_template(
                problem.problem, problem_number=i + 1
            )
@@ -37,11 +39,16 @@
    def get_answer_matrix(self):
        retval = []
        for problem in self.problem_list:
        for (problem_id,problem) in self.problem_list:
            for solution in problem.problem["solutions"]:
                retval.append([i[1] for i in solution["shuffled"]])
        return retval
    def get_problem_ids(self):
        retval = []
        for (problem_id,problem) in self.problem_list:
            retval.append(problem_id)
        return retval
class Exam:
    def __init__(
@@ -71,10 +78,20 @@
                cont = fd.read()
            files.append((i, cont))
        self.problem_source_list = []
        for nal in files:
        for i,nal in enumerate(files):
            par = Parser(nal[1])
            par.parseSections()
            self.problem_source_list.append(ProblemSource(parser=par))
            self.problem_source_list.append(
                {
                    'amount': 1,
                    'problems':
                        [
                            {
                                'id': i,
                                'parser': ProblemSource(parser=par)
                            },
                        ]
                 })
    def generatePapers(self):
        for i in range(self.paper_start, self.paper_start + self.number_of_papers):
@@ -117,4 +134,11 @@
            paper_matrix=paper.get_answer_matrix()
            retval.append(paper_matrix)
        return retval
        return retval
    def get_problem_ids(self):
        retval=[]
        for paper in self.paper_list:
            paper_ids=paper.get_problem_ids()
            retval.append(paper_ids)
        return retval