Docu ergänzt und Python aktualisiert

This commit is contained in:
2023-02-06 15:29:12 +01:00
parent 91a3fbfcba
commit 46584930f6
2 changed files with 58 additions and 1 deletions
+55 -1
View File
@@ -1,3 +1,57 @@
# SimulationTuplesort # SimulationTuplesort
ein Tool zur Simulation der verschiedenen Sortierverfahren in einer Anlage; picksort und tuplesort ein Tool zur Simulation der verschiedenen Sortierverfahren in einer Anlage:
- picksort und
- tuplesort.
## Picksort-Verfahren
![Picksort-Verfahren](video/picksort.gif)
Das Picksort Verfahren holt sich bei jeder Umdrehung das kleinstmögliche Objekt aus dem ersten Kreisel heraus. Daraus ergibt sich im zweiten Kreisel eine sortierte List der Bügelträger
Zur Vermittelung der einzelnen Schritte wurden folgender Unittest umgesetzt:
```python
lK = Roundabout()
lK.addList([6, 5, 4, 3, 2, 1])
rK = Roundabout(1)
sw = Switch(lK, rK)
p = RoundaboutPair(lK, rK, sw)
self.assertEqual(lK.content(), [1, 2, 3, 4, 5, 6])
p.runSimulation()
self.assertEqual(p.show(), ([], [1, 2, 3, 4, 5, 6]))
```
## Tuplesort-Verfahren
![Tuplesort-Verfahren](video/tuplesort.gif)
Das Tupelsort Verfahren arbeitet mit sog. Tupels. Dies sind Zahlenfolge die immer Aufsteigend sind.
Eine Zahlenfolge wie z.B. 1, 3, 5, 10, 2, 4, 7, 5, 8 kann in 3 Tupels unterteilt werden. Immer wenn sich in den Zahlen ein Sprung nach unten befindet definiert man ein Tupelende. Aus dieser Zahlenfolge ergeben sich beispielsweise die 3 Tuple 1,3, 5, 10 | 2, 4, 7 | 5, 8 .
Durch zusammenfügen der Einzeltupel ergibt sich am Ende eine sortierte folge.
Das Tupelsort verfahren hat bei einer grösseren Anzal von Elementen im Kreisel eine bessere Sortierperformance.
Zur Vermittelung der einzelnen Schritte wurden folgender Unittest umgesetzt:
```python
lK = Roundabout()
lK.addList([3, 2, 1])
rK = Roundabout(1)
rK.addList([6, 5, 4])
sw = Switch(lK, rK)
p = RoundaboutPair(lK, rK, sw)
sw.set_to_right()
self.assertEqual(p.show(), ([1, 2, 3], [6, 5, 4]))
p.sortStepTupleSort()
self.assertEqual(p.show(), ([1, 2], [5, 4, 3, 6]))
p.sortStepTupleSort()
self.assertEqual(p.show(), ([5, 2, 1], [4, 3, 6]))
p.sortStepTupleSort()
self.assertEqual(p.show(), ([5, 2], [3, 6, 1, 4]))
p.sortStepTupleSort()
self.assertEqual(p.show(), ([6, 5, 3, 2], [1, 4]))
p.sortStepTupleSort()
self.assertEqual(p.show(), ([], [1, 2, 3, 4, 5, 6]))
```
+3
View File
@@ -234,6 +234,9 @@ class TestObjectMethods(unittest.TestCase):
p.sortStep() p.sortStep()
self.assertEqual(p.show(), ([1, 2], [5, 4, 3, 6])) self.assertEqual(p.show(), ([1, 2], [5, 4, 3, 6]))
p.sortStep()
self.assertEqual(p.show(), ([1, 2], [5, 4, 3, 6]))