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