forked from hofmannol/AlgoDatSoSe25
constants, Sequenzen
This commit is contained in:
parent
8702bd847e
commit
09d81f1348
14
data/seq0.txt
Normal file
14
data/seq0.txt
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
-59
|
||||||
|
52
|
||||||
|
46
|
||||||
|
14
|
||||||
|
-50
|
||||||
|
58
|
||||||
|
-87
|
||||||
|
-77
|
||||||
|
34
|
||||||
|
15
|
||||||
|
50
|
||||||
|
47
|
||||||
|
51
|
||||||
|
48
|
100
data/seq1.txt
Normal file
100
data/seq1.txt
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
56
|
||||||
|
13
|
||||||
|
97
|
||||||
|
14
|
||||||
|
5
|
||||||
|
40
|
||||||
|
33
|
||||||
|
20
|
||||||
|
51
|
||||||
|
98
|
||||||
|
52
|
||||||
|
89
|
||||||
|
31
|
||||||
|
33
|
||||||
|
47
|
||||||
|
59
|
||||||
|
47
|
||||||
|
75
|
||||||
|
11
|
||||||
|
39
|
||||||
|
0
|
||||||
|
79
|
||||||
|
33
|
||||||
|
57
|
||||||
|
5
|
||||||
|
1
|
||||||
|
28
|
||||||
|
87
|
||||||
|
77
|
||||||
|
54
|
||||||
|
35
|
||||||
|
21
|
||||||
|
24
|
||||||
|
97
|
||||||
|
96
|
||||||
|
94
|
||||||
|
6
|
||||||
|
31
|
||||||
|
-45
|
||||||
|
53
|
||||||
|
-98
|
||||||
|
-44
|
||||||
|
85
|
||||||
|
-76
|
||||||
|
-48
|
||||||
|
-90
|
||||||
|
-99
|
||||||
|
47
|
||||||
|
-11
|
||||||
|
16
|
||||||
|
-98
|
||||||
|
98
|
||||||
|
-23
|
||||||
|
57
|
||||||
|
27
|
||||||
|
-35
|
||||||
|
23
|
||||||
|
65
|
||||||
|
-54
|
||||||
|
96
|
||||||
|
71
|
||||||
|
99
|
||||||
|
81
|
||||||
|
30
|
||||||
|
-7
|
||||||
|
76
|
||||||
|
-22
|
||||||
|
43
|
||||||
|
62
|
||||||
|
-49
|
||||||
|
73
|
||||||
|
59
|
||||||
|
75
|
||||||
|
36
|
||||||
|
39
|
||||||
|
15
|
||||||
|
51
|
||||||
|
-51
|
||||||
|
63
|
||||||
|
69
|
||||||
|
1
|
||||||
|
1
|
||||||
|
-25
|
||||||
|
-18
|
||||||
|
88
|
||||||
|
86
|
||||||
|
93
|
||||||
|
33
|
||||||
|
71
|
||||||
|
-95
|
||||||
|
56
|
||||||
|
2
|
||||||
|
4
|
||||||
|
11
|
||||||
|
-55
|
||||||
|
28
|
||||||
|
60
|
||||||
|
-55
|
||||||
|
-69
|
||||||
|
-97
|
10000
data/seq2.txt
Normal file
10000
data/seq2.txt
Normal file
File diff suppressed because it is too large
Load Diff
1000
data/seq3.txt
Normal file
1000
data/seq3.txt
Normal file
File diff suppressed because it is too large
Load Diff
41
utils/constants.py
Normal file
41
utils/constants.py
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
from literal import Literal
|
||||||
|
|
||||||
|
class MinValue(Literal):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__(0)
|
||||||
|
|
||||||
|
def __gt__(self, other):
|
||||||
|
return False
|
||||||
|
|
||||||
|
def __ge__(self, other):
|
||||||
|
return False
|
||||||
|
|
||||||
|
def __lt__(self, other):
|
||||||
|
return True
|
||||||
|
|
||||||
|
def __le__(self, other):
|
||||||
|
return True
|
||||||
|
|
||||||
|
def __eq__(self, other):
|
||||||
|
return False
|
||||||
|
|
||||||
|
class MaxValue(Literal):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__(0)
|
||||||
|
|
||||||
|
def __gt__(self, other):
|
||||||
|
return True
|
||||||
|
|
||||||
|
def __ge__(self, other):
|
||||||
|
return True
|
||||||
|
|
||||||
|
def __lt__(self, other):
|
||||||
|
return False
|
||||||
|
|
||||||
|
def __le__(self, other):
|
||||||
|
return False
|
||||||
|
|
||||||
|
def __eq__(self, other):
|
||||||
|
return False
|
@ -1,6 +1,7 @@
|
|||||||
from literal import Literal
|
from literal import Literal
|
||||||
from memory_cell import MemoryCell
|
from memory_cell import MemoryCell
|
||||||
from memory_manager import MemoryManager
|
from memory_manager import MemoryManager
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
class MemoryArray:
|
class MemoryArray:
|
||||||
|
|
||||||
@ -48,6 +49,33 @@ class MemoryArray:
|
|||||||
for cell in self.cells:
|
for cell in self.cells:
|
||||||
cell.reset_counters()
|
cell.reset_counters()
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def create_random_array(count, min_value, max_value):
|
||||||
|
"""Erzeugt ein zufälliges Speicherarray."""
|
||||||
|
size = Literal(count)
|
||||||
|
a = MemoryArray(size)
|
||||||
|
for i in a.indices():
|
||||||
|
a[i] = Literal(random.randint(min_value, max_value))
|
||||||
|
a.reset_counters()
|
||||||
|
return a
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def create_array_from_file(filename, limit=None):
|
||||||
|
"""Erzeugt ein Speicherarray aus einer Datei."""
|
||||||
|
this_dir = Path(__file__).resolve().parent
|
||||||
|
project_dir = this_dir.parent
|
||||||
|
filename = project_dir / filename
|
||||||
|
with open(filename) as f:
|
||||||
|
lines = f.readlines()
|
||||||
|
if limit is not None:
|
||||||
|
lines = lines[:limit]
|
||||||
|
size = Literal(len(lines))
|
||||||
|
a = MemoryArray(size)
|
||||||
|
for i, line in enumerate(lines):
|
||||||
|
a[Literal(i)] = Literal(int(line))
|
||||||
|
a.reset_counters()
|
||||||
|
return a
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
import random
|
import random
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
from literal import Literal
|
from literal import Literal
|
||||||
from memory_cell import MemoryCell
|
|
||||||
from memory_array import MemoryArray
|
from memory_array import MemoryArray
|
||||||
import random
|
import random
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
class TestMemoryArray(TestCase):
|
class TestMemoryArray(TestCase):
|
||||||
|
|
||||||
@ -10,18 +10,15 @@ class TestMemoryArray(TestCase):
|
|||||||
l = random.randint(5,10)
|
l = random.randint(5,10)
|
||||||
size = Literal(l)
|
size = Literal(l)
|
||||||
a = MemoryArray(size)
|
a = MemoryArray(size)
|
||||||
|
|
||||||
self.assertEqual(len(a), l)
|
self.assertEqual(len(a), l)
|
||||||
|
|
||||||
def test_set_item(self):
|
def test_set_item(self):
|
||||||
l = random.randint(5,10)
|
l = random.randint(5,10)
|
||||||
size = Literal(l)
|
size = Literal(l)
|
||||||
a = MemoryArray(size)
|
a = MemoryArray(size)
|
||||||
|
|
||||||
i = Literal(random.randint(0,l-1))
|
i = Literal(random.randint(0,l-1))
|
||||||
v = Literal(random.randint(1,100))
|
v = Literal(random.randint(1,100))
|
||||||
a[i] = v
|
a[i] = v
|
||||||
|
|
||||||
self.assertEqual(a[i].value, v.value)
|
self.assertEqual(a[i].value, v.value)
|
||||||
|
|
||||||
def test_get_item(self):
|
def test_get_item(self):
|
||||||
@ -29,29 +26,32 @@ class TestMemoryArray(TestCase):
|
|||||||
size = Literal(l)
|
size = Literal(l)
|
||||||
a = MemoryArray(size)
|
a = MemoryArray(size)
|
||||||
values = []
|
values = []
|
||||||
|
|
||||||
for i in a.indices():
|
for i in a.indices():
|
||||||
v = Literal(random.randint(1,100))
|
v = Literal(random.randint(1,100))
|
||||||
values.append(v.value)
|
values.append(v.value)
|
||||||
a[i] = v
|
a[i] = v
|
||||||
|
|
||||||
for pos, i in enumerate(a.indices()):
|
for pos, i in enumerate(a.indices()):
|
||||||
self.assertEqual(a[i].value, values[pos])
|
self.assertEqual(a[i].value, values[pos])
|
||||||
|
|
||||||
|
|
||||||
def test_reset_counters(self):
|
def test_reset_counters(self):
|
||||||
l = random.randint(5,10)
|
l = random.randint(5,10)
|
||||||
size = Literal(l)
|
size = Literal(l)
|
||||||
a = MemoryArray(size)
|
a = MemoryArray(size)
|
||||||
|
|
||||||
for i in a.indices():
|
for i in a.indices():
|
||||||
v = Literal(random.randint(1,100))
|
v = Literal(random.randint(1,100))
|
||||||
a[i] = v
|
a[i] = v
|
||||||
|
|
||||||
for i in a.indices():
|
for i in a.indices():
|
||||||
self.assertEqual(a[i].write_count, 1)
|
self.assertEqual(a[i].write_count, 1)
|
||||||
|
|
||||||
a.reset_counters()
|
a.reset_counters()
|
||||||
|
|
||||||
for i in a.indices():
|
for i in a.indices():
|
||||||
self.assertEqual(a[i].write_count, 0)
|
self.assertEqual(a[i].write_count, 0)
|
||||||
|
|
||||||
|
def test_create_random_array(self):
|
||||||
|
a = MemoryArray.create_random_array(10, 1, 100)
|
||||||
|
self.assertEqual(len(a), 10)
|
||||||
|
|
||||||
|
def test_create_array_from_file(self):
|
||||||
|
a = MemoryArray.create_array_from_file("data/seq0.txt")
|
||||||
|
self.assertEqual(len(a), 14)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user