diff options
author | Nao Pross <np@0hm.ch> | 2023-10-17 19:51:36 +0200 |
---|---|---|
committer | Nao Pross <np@0hm.ch> | 2023-10-17 19:51:36 +0200 |
commit | 20b4e61140871e114e54dd5843083d8a29371563 (patch) | |
tree | 076a3b684f2af9a534820e5ce488f67a414ff123 /src | |
parent | Pass TestFiniteRelationRepresentation, TestFiniteRelationCompose, TestFiniteR... (diff) | |
download | act4e-20b4e61140871e114e54dd5843083d8a29371563.tar.gz act4e-20b4e61140871e114e54dd5843083d8a29371563.zip |
Fix bug to pass TestFiniteMapRepresentation
Diffstat (limited to '')
-rw-r--r-- | src/act4e_solutions/maps_representation.py | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/src/act4e_solutions/maps_representation.py b/src/act4e_solutions/maps_representation.py index ad9cdf5..330b3fd 100644 --- a/src/act4e_solutions/maps_representation.py +++ b/src/act4e_solutions/maps_representation.py @@ -30,7 +30,7 @@ class MyFiniteMap(I.FiniteMap[A, B]): # print("dst: ", self._target.elements()) # print("val: ", self._values) # print("inp: ", a) - # assert a in self._source.elements() + assert a in self._source.elements() rv = None for v in self._values: @@ -38,11 +38,10 @@ class MyFiniteMap(I.FiniteMap[A, B]): # print(f"{v[0]} equals {a}") rv = v[1] - # assert self._target.contains(rv) + assert self._target.contains(rv) # print("ret: ", rv) # print("the type of rv is", type(rv)) # print() - # assert type(rv) != bool return rv @@ -51,30 +50,35 @@ class SolFiniteMapRepresentation(I.FiniteMapRepresentation): def load(self, h: I.IOHelper, s: I.FiniteMap_desc) -> I.FiniteMap[A, B]: fsr = SolFiniteSetRepresentation() + if not "values" in s.keys(): + raise I.InvalidFormat() + + if len(s["values"]) == 0: + raise I.InvalidFormat() + A = fsr.load(h, s["source"]) B = fsr.load(h, s["target"]) values = [] - # Check that the values are are in the domain and codomain for v in s["values"]: a, b = A.load(h, v[0]), B.load(h, v[1]) - values.append([a, b]) if not A.contains(a): print(f"{v[0]} is not in A: {A.elements()}") raise I.InvalidFormat() - if not v[1] in B.elements(): + if not B.contains(b): print(f"{v[1]} is not in B: {B.elements()}") raise I.InvalidFormat() + values.append([a, b]) + # Check that the domain values are unique - # FIXME: fix this part - domvals = [] - for d in map(lambda v: v[0], values): - if d in domvals: + domain = [] + for a, _ in values: + if a in domain: raise I.InvalidFormat() - domvals.append(d) + domain.append(a) return MyFiniteMap(A, B, values) @@ -87,10 +91,10 @@ class SolFiniteMapRepresentation(I.FiniteMapRepresentation): "values": [] } - # for a in m.source().elements(): - # b = m(a) - # d["values"].append([ - # m.source().save(h, a), - # m.target().save(h, b)]) + for a in m.source().elements(): + b = m(a) + d["values"].append([ + m.source().save(h, a), + m.target().save(h, b)]) return d |