Parser of berki style problems and generator of latex file
Samo Penic
2018-11-21 839d16fdf062d1675430d669025772b36ef500f8
Added dec formatting and checking multiple 0 answers.
3 files modified
35 ■■■■■ changed files
aoi_gen/Problem.py 7 ●●●●● patch | view | raw | blame | history
aoi_gen/Variable.py 26 ●●●●● patch | view | raw | blame | history
testcases/dvovod3.txt 2 ●●● patch | view | raw | blame | history
aoi_gen/Problem.py
@@ -68,8 +68,12 @@
    def checkAnsProximity(self, ans):
        for idx1, (val1, cor) in enumerate(ans):
            for idx2, (val2, cor) in enumerate(ans):
                if idx1 == idx2:
                    continue
                if (val1.get_formatted_value()==val2.get_formatted_value()):
                    return True
                if not val1.is_float() or not val2.is_float():
                    if val1.get_formatted_value() == val2.get_formatted_value():
                        return True
@@ -118,7 +122,10 @@
                for __corrsplit in __corr.split(";"):
                    __result = None
                    if __corrsplit.find("=") >= 0:
                        try:
                        exec(self.substitute_octave(__corrsplit))
                        except:
                            print("Error while evaluating {}".format(__corrsplit))
                    else:
                        __result = eval(self.substitute_octave(__corrsplit))
                if __result is None:
aoi_gen/Variable.py
@@ -90,7 +90,7 @@
        elif type == "prefix":
            return PrefixFloatFormatter(arglist)
        elif type == "dec" or type == "decimal":
            return EngFloatFormatter(arglist)  # fallback to engineering
            return DecFloatFormatter(arglist)
        else:
            return None
@@ -113,6 +113,30 @@
    def getValue(self, string):
        return string
class DecFloatFormatter(FormatterFactory):
    def __init__(self, formatparameters):
        if len(formatparameters) != 1:
            raise Exceptions.WrongParameters("Dec format accept only one argument")
        self.precision = int(formatparameters[0])
    def toFormat(self, num):
        try:
            num = float(num)
        except ValueError:
            raise ValueError
        except TypeError:
            raise ValueError
        return (
                ("{:." + str(self.precision - 1) + "f}").format(num).replace(".", ",\!")
            )
    def getValue(self, num):
        val = ("{:." + str(self.precision - 1) + "f}").format(num)
        return float(val)
class SciFloatFormatter(FormatterFactory):
    def __init__(self, formatparameters):
testcases/dvovod3.txt
@@ -85,7 +85,7 @@
#StartSkalar
ime:    r0
izpis:    dec 1
izpis:    dec 3
nacin:    FixedVals 5e-3 6e-3 8e-3
#EndSkalar