forked from hofmannol/AlgoDatSoSe25
87 lines
2.8 KiB
Python
87 lines
2.8 KiB
Python
|
|
class Literal:
|
|
def __init__(self, value):
|
|
"""Initialisiert Literal."""
|
|
self.value = value
|
|
self.read_count = 0
|
|
self.compare_count = 0
|
|
|
|
def reset_counters(self):
|
|
"""Setzt alle Zähler auf 0 zurück."""
|
|
self.read_count = 0
|
|
self.compare_count = 0
|
|
|
|
def get(self):
|
|
"""Liest den Wert aus."""
|
|
self.read_count += 1
|
|
return self.value
|
|
|
|
def __eq__(self, other):
|
|
"""Vergleicht den Wert mit einem anderen Wert."""
|
|
assert isinstance(other, Literal), "Can only compare with Literal or MemoryCell"
|
|
self.compare_count += 1
|
|
self.read_count += 1
|
|
other.read_count += 1
|
|
return self.value == other.value
|
|
|
|
def __ne__(self, other):
|
|
"""Vergleicht den Wert der Speicherzelle mit einem anderen Wert."""
|
|
assert isinstance(other, Literal), "Can only compare with Literal or MemoryCell"
|
|
self.compare_count += 1
|
|
self.read_count += 1
|
|
other.read_count += 1
|
|
return self.value != other.value
|
|
|
|
def __lt__(self, other):
|
|
"""Vergleicht den Wert der Speicherzelle mit einem anderen Wert."""
|
|
assert isinstance(other, Literal), "Can only compare with Literal or MemoryCell"
|
|
self.compare_count += 1
|
|
self.read_count += 1
|
|
other.read_count += 1
|
|
return self.value < other.value
|
|
|
|
def __le__(self, other):
|
|
"""Vergleicht den Wert der Speicherzelle mit einem anderen Wert."""
|
|
assert isinstance(other, Literal), "Can only compare with Literal or MemoryCell"
|
|
self.compare_count += 1
|
|
self.read_count += 1
|
|
other.read_count += 1
|
|
return self.value <= other.value
|
|
|
|
def __gt__(self, other):
|
|
"""Vergleicht den Wert der Speicherzelle mit einem anderen Wert."""
|
|
assert isinstance(other, Literal), "Can only compare with Literal or MemoryCell"
|
|
self.compare_count += 1
|
|
self.read_count += 1
|
|
other.read_count += 1
|
|
return self.value > other.value
|
|
|
|
def __ge__(self, other):
|
|
"""Vergleicht den Wert der Speicherzelle mit einem anderen Wert."""
|
|
assert isinstance(other, Literal), "Can only compare with Literal or MemoryCell"
|
|
self.compare_count += 1
|
|
self.read_count += 1
|
|
other.read_count += 1
|
|
return self.value >= other.value
|
|
|
|
def __str__(self):
|
|
"""Repräsentation des Werts."""
|
|
return f"{self.value}"
|
|
|
|
def get_read_count(self):
|
|
"""Gibt zurück, wie oft der Wert gelesen wurde."""
|
|
return self.read_count
|
|
|
|
def __int__(self):
|
|
"""Gibt den Wert als Integer zurück."""
|
|
self.read_count += 1
|
|
return int(self.value)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
l1 = Literal(5)
|
|
l2 = Literal(3)
|
|
print(l1 == l2)
|
|
print(l1 > l2)
|
|
|