From 839d16fdf062d1675430d669025772b36ef500f8 Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@gmail.com>
Date: Wed, 21 Nov 2018 21:09:14 +0000
Subject: [PATCH] Added dec formatting and checking multiple 0 answers.
---
aoi_gen/Problem.py | 9 ++++++++-
testcases/dvovod3.txt | 2 +-
aoi_gen/Variable.py | 26 +++++++++++++++++++++++++-
3 files changed, 34 insertions(+), 3 deletions(-)
diff --git a/aoi_gen/Problem.py b/aoi_gen/Problem.py
index ee70873..bb6be1a 100644
--- a/aoi_gen/Problem.py
+++ b/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:
- exec(self.substitute_octave(__corrsplit))
+ try:
+ exec(self.substitute_octave(__corrsplit))
+ except:
+ print("Error while evaluating {}".format(__corrsplit))
else:
__result = eval(self.substitute_octave(__corrsplit))
if __result is None:
diff --git a/aoi_gen/Variable.py b/aoi_gen/Variable.py
index 967ec41..4c7c63b 100644
--- a/aoi_gen/Variable.py
+++ b/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):
diff --git a/testcases/dvovod3.txt b/testcases/dvovod3.txt
index cbe8012..05c6f10 100644
--- a/testcases/dvovod3.txt
+++ b/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
--
Gitblit v1.8.0