Description

Book Synopsis

Augment your knowledge of Python with this entertaining learning guide, which features 100 exercises and programming puzzles and solutions. Python Challenges will help prepare you for your next exam or a job interview, and covers numerous practical topics such as strings, data structures, recursion, arrays, and more.

Each topic is addressed in its own separate chapter, starting with an introduction to the basics and followed by 10 to 15 exercises of various degrees of difficulty, helping you to improve your programming skills effectively. Detailed sample solutions, including the algorithms used for all tasks, are included to maximize your understanding of each area. Author Michael Inden also describes alternative solutions and analyzes possible pitfalls and typical errors.

Three appendices round out the book: the first covers the Python command line interpreter, which is often helpful for trying out the code snippets and examples in the b

Table of Contents
1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1 Aufbau der Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Grundgerüst des PyCharm-Projekts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 Grundgerüst für die Unit Tests mit PyTest . . . . . . . . . . . . . . . . . . . . . . . . 41.4 Anmerkung zum Programmierstil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.5 Anmerkung zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.6 Ausprobieren der Beispiele und Lösungen . . . . . . . . . . . . . . . . . . . . . . . 9I Grundlagen 112 Mathematische Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.1.1 Römische Zahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.1.2 Zahlenspielereien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.2 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.2.1 Aufgabe 1: Grundrechenarten (★✩✩✩✩) . . . . . . . . . . . . . . . . . 212.2.2 Aufgabe 2: Zahl als Text (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . 222.2.3 Aufgabe 3: Vollkommene Zahlen (★★✩✩✩) . . . . . . . . . . . . . . . 222.2.4 Aufgabe 4: Primzahlen (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 232.2.5 Aufgabe 5: Primzahlpaare (★★✩✩✩). . . . . . . . . . . . . . . . . . . . . 232.2.6 Aufgabe 6: Prüfsumme (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 232.2.7 Aufgabe 7: Römische Zahlen (★★★★✩) . . . . . . . . . . . . . . . . . . 242.2.8 Aufgabe 8: Kombinatorik (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . 242.2.9 Aufgabe 9: Armstrong-Zahlen (★★✩✩✩) . . . . . . . . . . . . . . . . . 252.2.10 Aufgabe 10: Max Change Calculator (★★★★✩) . . . . . . . . . . . 252.2.11 Aufgabe 11: Befreundete Zahlen (★★✩✩✩) . . . . . . . . . . . . . . . 262.2.12 Aufgabe 12: Primfaktorzerlegung (★★★✩✩) . . . . . . . . . . . . . . 262.3 Lösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.3.1 Lösung 1: Grundrechenarten (★✩✩✩✩) . . . . . . . . . . . . . . . . . . 272.3.2 Lösung 2: Zahl als Text (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 292.3.3 Lösung 3: Vollkommene Zahlen (★★✩✩✩) . . . . . . . . . . . . . . . . 312.3.4 Lösung 4: Primzahlen (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 33viii Inhaltsverzeichnis2.3.5 Lösung 5: Primzahlpaare (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . 352.3.6 Lösung 6: Prüfsumme (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 392.3.7 Lösung 7: Römische Zahlen (★★★★✩) . . . . . . . . . . . . . . . . . . . 402.3.8 Lösung 8: Kombinatorik (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 432.3.9 Lösung 9: Armstrong-Zahlen (★★✩✩✩) . . . . . . . . . . . . . . . . . . 462.3.10 Lösung 10: Max Change Calculator (★★★★✩) . . . . . . . . . . . . 492.3.11 Lösung 11: Befreundete Zahlen (★★✩✩✩) . . . . . . . . . . . . . . . . 502.3.12 Lösung 12: Primfaktorzerlegung (★★★✩✩) . . . . . . . . . . . . . . . 523 Rekursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.1.1 Mathematische Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.1.2 Algorithmische Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593.1.3 Typische Probleme: Endlose Aufrufe und RecursionError 643.2 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663.2.1 Aufgabe 1: Fibonacci (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . 663.2.2 Aufgabe 2: Ziffern verarbeiten (★★✩✩✩) . . . . . . . . . . . . . . . . . 663.2.3 Aufgabe 3: ggT / GCD (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 673.2.4 Aufgabe 4: Reverse String (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . 683.2.5 Aufgabe 5: Array Sum (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 683.2.6 Aufgabe 6: Array Min (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . 683.2.7 Aufgabe 7: Konvertierungen (★★✩✩✩) . . . . . . . . . . . . . . . . . . . 693.2.8 Aufgabe 8: Exponentialfunktion (★★✩✩✩) . . . . . . . . . . . . . . . . 703.2.9 Aufgabe 9: Pascal’sches Dreieck (★★✩✩✩) . . . . . . . . . . . . . . . 713.2.10 Aufgabe 10: Zahlenpalindrome (★★★★✩) . . . . . . . . . . . . . . . . 713.2.11 Aufgabe 11: Permutationen (★★★✩✩) . . . . . . . . . . . . . . . . . . . 723.2.12 Aufgabe 12: Count Substrings (★★✩✩✩) . . . . . . . . . . . . . . . . . 723.2.13 Aufgabe 13: Lineal (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . . . 733.3 Lösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743.3.1 Lösung 1: Fibonacci (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . . 743.3.2 Lösung 2: Ziffern verarbeiten (★★✩✩✩) . . . . . . . . . . . . . . . . . . 763.3.3 Lösung 3: ggT / GCD (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . 783.3.4 Lösung 4: Reverse String (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . 803.3.5 Lösung 5: Array Sum (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . 813.3.6 Lösung 6: Array Min (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . . 833.3.7 Lösung 7: Konvertierungen (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . 843.3.8 Lösung 8: Exponentialfunktion (★★✩✩✩) . . . . . . . . . . . . . . . . . 873.3.9 Lösung 9: Pascal’sches Dreieck (★★✩✩✩) . . . . . . . . . . . . . . . 903.3.10 Lösung 10: Zahlenpalindrome (★★★★✩) . . . . . . . . . . . . . . . . . 933.3.11 Lösung 11: Permutationen (★★★✩✩) . . . . . . . . . . . . . . . . . . . . 963.3.12 Lösung 12: Count Substrings (★★✩✩✩) . . . . . . . . . . . . . . . . . . 993.3.13 Lösung 13: Lineal (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102Inhaltsverzeichnis ix4 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1054.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1054.2 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114.2.1 Aufgabe 1: Zahlenumwandlungen (★★✩✩✩) . . . . . . . . . . . . . . 1114.2.2 Aufgabe 2: Joiner (★✩✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114.2.3 Aufgabe 3: Reverse String (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . 1124.2.4 Aufgabe 4: Palindrom (★★★✩✩). . . . . . . . . . . . . . . . . . . . . . . . . 1124.2.5 Aufgabe 5: No Duplicate Chars (★★★✩✩) . . . . . . . . . . . . . . . . 1134.2.6 Aufgabe 6: Doppelte Buchstaben entfernen (★★★✩✩) . . . . . 1134.2.7 Aufgabe 7: Capitalize (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . 1144.2.8 Aufgabe 8: Rotation (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . . 1154.2.9 Aufgabe 9: Wohlgeformte Klammern (★★✩✩✩) . . . . . . . . . . . 1154.2.10 Aufgabe 10: Anagramm (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 1164.2.11 Aufgabe 11: Morse Code (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . 1164.2.12 Aufgabe 12: Pattern Checker (★★✩✩✩) . . . . . . . . . . . . . . . . . . 1174.2.13 Aufgabe 13: Tennis-Punktestand (★★★✩✩) . . . . . . . . . . . . . . . 1174.2.14 Aufgabe 14: Versionsnummern (★★✩✩✩) . . . . . . . . . . . . . . . . 1184.2.15 Aufgabe 15: Konvertierung str_to_number (★★✩✩✩) . . . . 1184.2.16 Aufgabe 16: Print Tower (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . 1194.2.17 Aufgabe 17: Gefüllter Rahmen (★★✩✩✩) . . . . . . . . . . . . . . . . . 1194.2.18 Aufgabe 18: Vokale raten (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . 1194.3 Lösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1204.3.1 Lösung 1: Zahlenumwandlungen (★★✩✩✩) . . . . . . . . . . . . . . . 1204.3.2 Lösung 2: Joiner (★✩✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234.3.3 Lösung 3: Reverse String (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . 1244.3.4 Lösung 4: Palindrom (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . 1264.3.5 Lösung 5: No Duplicate Chars (★★★✩✩) . . . . . . . . . . . . . . . . . 1294.3.6 Lösung 6: Doppelte Buchstaben entfernen (★★★✩✩) . . . . . . 1314.3.7 Lösung 7: Capitalize (★★✩✩✩). . . . . . . . . . . . . . . . . . . . . . . . . . 1324.3.8 Lösung 8: Rotation (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1364.3.9 Lösung 9: Wohlgeformte Klammern (★★✩✩✩) . . . . . . . . . . . . 1374.3.10 Lösung 10: Anagramm (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 1394.3.11 Lösung 11: Morse Code (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . 1404.3.12 Lösung 12: Pattern Checker (★★✩✩✩) . . . . . . . . . . . . . . . . . . . 1424.3.13 Lösung 13: Tennis-Punktestand (★★★✩✩) . . . . . . . . . . . . . . . . 1444.3.14 Lösung 14: Versionsnummern (★★✩✩✩) . . . . . . . . . . . . . . . . . 1474.3.15 Lösung 15: Konvertierung str_to_number (★★✩✩✩) . . . . . 1484.3.16 Lösung 16: Print Tower (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . . 1514.3.17 Lösung 17: Gefüllter Rahmen (★★✩✩✩) . . . . . . . . . . . . . . . . . 1534.3.18 Lösung 18: Vokale raten (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . 154x Inhaltsverzeichnis5 Basisdatenstrukturen: Listen, Sets und Dictionaries . . . . . . . . . . . 1575.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1575.1.1 Sequenzielle Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1575.1.2 Listen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1595.1.3 Mengen (Sets) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1635.1.4 Schlüssel-Wert-Abbildungen (Dictionaries) . . . . . . . . . . . . . . . . 1645.1.5 Der Stack als LIFO-Datenstruktur . . . . . . . . . . . . . . . . . . . . . . . . 1665.1.6 Die Queue als FIFO-Datenstruktur . . . . . . . . . . . . . . . . . . . . . . . 1675.2 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1715.2.1 Aufgabe 1: Gemeinsame Elemente (★★✩✩✩). . . . . . . . . . . . . 1715.2.2 Aufgabe 2: Eigener Stack (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . 1715.2.3 Aufgabe 3: List Reverse (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . 1715.2.4 Aufgabe 4: Duplikate entfernen (★★✩✩✩) . . . . . . . . . . . . . . . . 1725.2.5 Aufgabe 5: Maximaler Gewinn (★★★✩✩) . . . . . . . . . . . . . . . . . 1725.2.6 Aufgabe 6: Längstes Teilstück (★★★✩✩) . . . . . . . . . . . . . . . . . 1735.2.7 Aufgabe 7: Wohlgeformte Klammern (★★✩✩✩) . . . . . . . . . . . 1735.2.8 Aufgabe 8: Pascal’sches Dreieck (★★★✩✩) . . . . . . . . . . . . . . . 1745.2.9 Aufgabe 9: Check Magic Triangle (★★★✩✩) . . . . . . . . . . . . . . 1745.2.10 Aufgabe 10: Häufigste Elemente (★★✩✩✩) . . . . . . . . . . . . . . . 1755.2.11 Aufgabe 11: Addition von Ziffern (★★★✩✩) . . . . . . . . . . . . . . . 1755.2.12 Aufgabe 12: List Merge (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 1765.2.13 Aufgabe 13: Excel Magic Select (★★✩✩✩) . . . . . . . . . . . . . . . 1765.2.14 Aufgabe 14: Stack Based Queue (★★✩✩✩) . . . . . . . . . . . . . . . 1775.3 Lösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1785.3.1 Lösung 1: Gemeinsame Elemente (★★✩✩✩) . . . . . . . . . . . . . 1785.3.2 Lösung 2: Eigener Stack (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . 1805.3.3 Lösung 3: List Reverse (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 1815.3.4 Lösung 4: Duplikate entfernen (★★✩✩✩) . . . . . . . . . . . . . . . . . 1845.3.5 Lösung 5: Maximaler Gewinn (★★★✩✩) . . . . . . . . . . . . . . . . . . 1865.3.6 Lösung 6: Längstes Teilstück (★★★✩✩) . . . . . . . . . . . . . . . . . . 1885.3.7 Lösung 7: Wohlgeformte Klammern (★★✩✩✩) . . . . . . . . . . . . 1905.3.8 Lösung 8: Pascal’sches Dreieck (★★★✩✩). . . . . . . . . . . . . . . . 1945.3.9 Lösung 9: Check Magic Triangle (★★★✩✩) . . . . . . . . . . . . . . . 1965.3.10 Lösung 10: Häufigste Elemente (★★✩✩✩) . . . . . . . . . . . . . . . . 1995.3.11 Lösung 11: Addition von Ziffern (★★★✩✩) . . . . . . . . . . . . . . . . 2005.3.12 Lösung 12: List Merge (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 2045.3.13 Lösung 13: Excel Magic Select (★★✩✩✩) . . . . . . . . . . . . . . . . 2085.3.14 Lösung 14: Stack Based Queue (★★✩✩✩) . . . . . . . . . . . . . . . 210Inhaltsverzeichnis xi6 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2136.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2136.1.1 Eindimensionale Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2146.1.2 Mehrdimensionale Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2226.1.3 Typische Fehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2276.1.4 Besonderheiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286.1.5 Rekapitulation: NumPy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2296.2 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356.2.1 Aufgabe 1: Gerade vor ungeraden Zahlen (★★✩✩✩) . . . . . . . 2356.2.2 Aufgabe 2: Flip (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356.2.3 Aufgabe 3: Palindrom (★★✩✩✩). . . . . . . . . . . . . . . . . . . . . . . . . 2356.2.4 Aufgabe 4: Inplace Rotate (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . 2366.2.5 Aufgabe 5: Jewels Board Init (★★★✩✩) . . . . . . . . . . . . . . . . . . 2366.2.6 Aufgabe 6: Jewels Board Erase Diamonds (★★★★✩) . . . . . . 2386.2.7 Aufgabe 7: Spiral-Traversal (★★★★✩) . . . . . . . . . . . . . . . . . . . . 2396.2.8 Aufgabe 8: Add One to Array As Number (★★✩✩✩). . . . . . . . 2396.2.9 Aufgabe 9: Sudoku-Checker (★★★✩✩) . . . . . . . . . . . . . . . . . . . 2406.2.10 Aufgabe 10: Flood-Fill (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 2416.2.11 Aufgabe 11: Array Min und Max (★★✩✩✩) . . . . . . . . . . . . . . . . 2426.2.12 Aufgabe 12: Array Split (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . . 2436.2.13 Aufgabe 13: Minesweeper Board (★★★✩✩) . . . . . . . . . . . . . . . 2446.3 Lösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2466.3.1 Lösung 1: Gerade vor ungeraden Zahlen (★★✩✩✩) . . . . . . . . 2466.3.2 Lösung 2: Flip (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2506.3.3 Lösung 3: Palindrom (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . 2536.3.4 Lösung 4: Inplace Rotate (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . 2556.3.5 Lösung 5: Jewels Board Init (★★★✩✩) . . . . . . . . . . . . . . . . . . . 2596.3.6 Lösung 6: Jewels Board Erase Diamonds (★★★★✩) . . . . . . . 2656.3.7 Lösung 7: Spiral-Traversal (★★★★✩) . . . . . . . . . . . . . . . . . . . . . 2736.3.8 Lösung 8: Add One to Array As Number (★★✩✩✩) . . . . . . . . 2776.3.9 Lösung 9: Sudoku-Checker (★★★✩✩) . . . . . . . . . . . . . . . . . . . 2786.3.10 Lösung 10: Flood-Fill (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . 2836.3.11 Lösung 11: Array Min und Max (★★✩✩✩) . . . . . . . . . . . . . . . . 2876.3.12 Lösung 12: Array Split (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 2906.3.13 Lösung 13: Minesweeper Board (★★★✩✩) . . . . . . . . . . . . . . . 294xii InhaltsverzeichnisII Fortgeschrittenere und kniffligere Themen 3017 Rekursion Advanced . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3037.1 Memoization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3037.1.1 Memoization für Fibonacci-Zahlen . . . . . . . . . . . . . . . . . . . . . . . . 3037.1.2 Memoization für Pascal’sches Dreieck . . . . . . . . . . . . . . . . . . . . 3057.1.3 Memoization mit Python-Bordmitteln . . . . . . . . . . . . . . . . . . . . . . 3077.2 Backtracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3117.2.1 n-Damen-Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3117.3 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3157.3.1 Aufgabe 1: Türme von Hanoi (★★★✩✩) . . . . . . . . . . . . . . . . . . 3157.3.2 Aufgabe 2: Edit Distance (★★★★✩) . . . . . . . . . . . . . . . . . . . . . . 3167.3.3 Aufgabe 3: Longest Common Subsequence (★★★✩✩) . . . . . 3167.3.4 Aufgabe 4: Weg aus Labyrinth (★★★✩✩) . . . . . . . . . . . . . . . . . 3177.3.5 Aufgabe 5: Sudoku-Solver (★★★★✩) . . . . . . . . . . . . . . . . . . . . 3187.3.6 Aufgabe 6: Math Operator Checker (★★★★✩) . . . . . . . . . . . . . 3197.3.7 Aufgabe 7: Wassereimer-Problem (★★★✩✩) . . . . . . . . . . . . . . 3207.3.8 Aufgabe 8: Alle Palindrom-Teilstrings (★★★★✩) . . . . . . . . . . . 3217.3.9 Aufgabe 9: n-Damen-Problem (★★★✩✩) . . . . . . . . . . . . . . . . . 3217.4 Lösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3227.4.1 Lösung 1: Türme von Hanoi (★★★✩✩) . . . . . . . . . . . . . . . . . . . 3227.4.2 Lösung 2: Edit Distance (★★★★✩). . . . . . . . . . . . . . . . . . . . . . . 3277.4.3 Lösung 3: Longest Common Subsequence (★★★✩✩) . . . . . . 3307.4.4 Lösung 4: Weg aus Labyrinth (★★★✩✩) . . . . . . . . . . . . . . . . . . 3347.4.5 Lösung 5: Sudoku-Solver (★★★★✩) . . . . . . . . . . . . . . . . . . . . . 3377.4.6 Lösung 6: Math Operator Checker (★★★★✩). . . . . . . . . . . . . . 3447.4.7 Lösung 7: Wassereimer-Problem (★★★★✩). . . . . . . . . . . . . . . 3477.4.8 Lösung 8: Alle Palindrom-Teilstrings (★★★★✩) . . . . . . . . . . . . 3507.4.9 Lösung 9: n-Damen-Problem (★★★✩✩) . . . . . . . . . . . . . . . . . . 3548 Binärbäume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3618.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3618.1.1 Aufbau, Begrifflichkeiten und Anwendungsbeispiele . . . . . . . . 3618.1.2 Binärbäume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3628.1.3 Binärbäume mit Ordnung: binäre Suchbäume . . . . . . . . . . . . . 3638.1.4 Traversierungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3658.1.5 Balancierte Bäume und weitere Eigenschaften . . . . . . . . . . . . . 3678.1.6 Bäume für die Beispiele und Übungsaufgaben . . . . . . . . . . . . . 3698.2 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3718.2.1 Aufgabe 1: Tree Traversal (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . 3718.2.2 Aufgabe 2: In-, Pre- und Postorder iterativ (★★★★✩) . . . . . . . 3718.2.3 Aufgabe 3: Tree-Höhe berechnen (★★✩✩✩) . . . . . . . . . . . . . . 3718.2.4 Aufgabe 4: Kleinster gemeinsamer Vorfahre (★★★✩✩) . . . . . 372Inhaltsverzeichnis xiii8.2.5 Aufgabe 5: Breadth-First (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . 3728.2.6 Aufgabe 6: Level Sum (★★★★✩) . . . . . . . . . . . . . . . . . . . . . . . . 3738.2.7 Aufgabe 7: Tree Rotate (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . . 3738.2.8 Aufgabe 8: Rekonstruktion (★★★✩✩) . . . . . . . . . . . . . . . . . . . . 3748.2.9 Aufgabe 9: Math Evaluation (★★✩✩✩) . . . . . . . . . . . . . . . . . . . 3748.2.10 Aufgabe 10: Symmetrie (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 3758.2.11 Aufgabe 11: Check Binary Search Tree (★★✩✩✩) . . . . . . . . . 3768.2.12 Aufgabe 12: Vollständigkeit (★★★★★) . . . . . . . . . . . . . . . . . . . . 3768.2.13 Aufgabe 13: Tree Printer (★★★★★) . . . . . . . . . . . . . . . . . . . . . . 3788.3 Lösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3818.3.1 Lösung 1: Tree Traversal (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . 3818.3.2 Lösung 2: In-, Pre- und Postorder iterativ (★★★★✩) . . . . . . . . 3838.3.3 Lösung 3: Tree-Höhe berechnen (★★✩✩✩) . . . . . . . . . . . . . . . 3908.3.4 Lösung 4: Kleinster gemeinsamer Vorfahre (★★★✩✩) . . . . . . 3918.3.5 Lösung 5: Breadth-First (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . . 3948.3.6 Lösung 6: Level Sum (★★★★✩) . . . . . . . . . . . . . . . . . . . . . . . . . 3968.3.7 Lösung 7: Tree Rotate (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 3998.3.8 Lösung 8: Rekonstruktion (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . 4028.3.9 Lösung 9: Math Evaluation (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . 4078.3.10 Lösung 10: Symmetrie (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 4088.3.11 Lösung 11: Check Binary Search Tree (★★✩✩✩) . . . . . . . . . . 4138.3.12 Lösung 12: Vollständigkeit (★★★★★). . . . . . . . . . . . . . . . . . . . . 4158.3.13 Lösung 13: Tree Printer (★★★★★) . . . . . . . . . . . . . . . . . . . . . . . 4239 Suchen und Sortieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4339.1 Einführung Suchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4339.1.1 Binärsuche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4359.2 Einführung Sortieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4369.2.1 Insertion Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4369.2.2 Selection Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4389.2.3 Merge Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4409.2.4 Quick Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4419.2.5 Bucket Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4439.2.6 Schlussgedanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4449.3 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4459.3.1 Aufgabe 1: Contains All (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 4459.3.2 Aufgabe 2: Partitionierung (★★★★✩). . . . . . . . . . . . . . . . . . . . . 4459.3.3 Aufgabe 3: Binärsuche (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 4469.3.4 Aufgabe 4: Insertion Sort (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . 4469.3.5 Aufgabe 5: Selection Sort (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . 4479.3.6 Aufgabe 6: Quick Sort (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 4479.3.7 Aufgabe 7: Bucket Sort (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 4489.3.8 Aufgabe 8: Suche in rotierten Daten (★★★★✩) . . . . . . . . . . . . 448xiv Inhaltsverzeichnis9.4 Lösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4509.4.1 Lösung 1: Contains All (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 4509.4.2 Lösung 2: Partitionierung (★★★★✩) . . . . . . . . . . . . . . . . . . . . . 4519.4.3 Lösung 3: Binärsuche (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 4539.4.4 Lösung 4: Insertion Sort (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . 4569.4.5 Lösung 5: Selection Sort (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . 4579.4.6 Lösung 6: Quick Sort (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . 4589.4.7 Lösung 7: Bucket Sort (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 4609.4.8 Lösung 8: Suche in rotierten Daten (★★★★✩) . . . . . . . . . . . . . 46110 Schlusswort und ergänzende Literatur . . . . . . . . . . . . . . . . . . . . . . . . 46710.1 Schlusswort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46710.1.1 Gelerntes pro Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46710.1.2 Bedenkenswertes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46910.2 Knobelaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47110.2.1 Goldsäcke – Fälschung entdecken . . . . . . . . . . . . . . . . . . . . . . . 47110.2.2 Pferderennen – schnellste drei Pferde ermitteln . . . . . . . . . . . . 47210.3 Ergänzende Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475III Anhang 479A Kurzeinführung Pytest. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481A.1 Schreiben und Ausführen von Tests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481A.1.1 Installation von Pytest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481A.1.2 Beispiel: Ein erster Unit Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482A.1.3 Ausführen von Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482A.1.4 Behandlung erwarteter Exceptions . . . . . . . . . . . . . . . . . . . . . . . 484A.1.5 Parametrisierte Tests mit Pytest . . . . . . . . . . . . . . . . . . . . . . . . . . 485A.2 Weiterführende Literatur zu Pytest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486B Kurzeinführung Dekoratoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487C Schnelleinstieg O-Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493C.1 Abschätzungen mit der O-Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493C.1.1 Komplexitätsklassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494C.1.2 Komplexität und Programmlaufzeit . . . . . . . . . . . . . . . . . . . . . . . 496Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499

Python Challenges

    Product form

    £49.49

    Includes FREE delivery

    RRP £54.99 – you save £5.50 (10%)

    Order before 4pm today for delivery by Fri 19 Jun 2026.

    A Paperback by Michael Inden

    1 in stock


      View other formats and editions of Python Challenges by Michael Inden

      Publisher: APress
      Publication Date: 23/01/2022
      ISBN13: 9781484273975, 978-1484273975
      ISBN10:

      Description

      Book Synopsis

      Augment your knowledge of Python with this entertaining learning guide, which features 100 exercises and programming puzzles and solutions. Python Challenges will help prepare you for your next exam or a job interview, and covers numerous practical topics such as strings, data structures, recursion, arrays, and more.

      Each topic is addressed in its own separate chapter, starting with an introduction to the basics and followed by 10 to 15 exercises of various degrees of difficulty, helping you to improve your programming skills effectively. Detailed sample solutions, including the algorithms used for all tasks, are included to maximize your understanding of each area. Author Michael Inden also describes alternative solutions and analyzes possible pitfalls and typical errors.

      Three appendices round out the book: the first covers the Python command line interpreter, which is often helpful for trying out the code snippets and examples in the b

      Table of Contents
      1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1 Aufbau der Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Grundgerüst des PyCharm-Projekts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 Grundgerüst für die Unit Tests mit PyTest . . . . . . . . . . . . . . . . . . . . . . . . 41.4 Anmerkung zum Programmierstil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.5 Anmerkung zu den Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.6 Ausprobieren der Beispiele und Lösungen . . . . . . . . . . . . . . . . . . . . . . . 9I Grundlagen 112 Mathematische Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.1.1 Römische Zahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.1.2 Zahlenspielereien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.2 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.2.1 Aufgabe 1: Grundrechenarten (★✩✩✩✩) . . . . . . . . . . . . . . . . . 212.2.2 Aufgabe 2: Zahl als Text (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . 222.2.3 Aufgabe 3: Vollkommene Zahlen (★★✩✩✩) . . . . . . . . . . . . . . . 222.2.4 Aufgabe 4: Primzahlen (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 232.2.5 Aufgabe 5: Primzahlpaare (★★✩✩✩). . . . . . . . . . . . . . . . . . . . . 232.2.6 Aufgabe 6: Prüfsumme (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 232.2.7 Aufgabe 7: Römische Zahlen (★★★★✩) . . . . . . . . . . . . . . . . . . 242.2.8 Aufgabe 8: Kombinatorik (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . 242.2.9 Aufgabe 9: Armstrong-Zahlen (★★✩✩✩) . . . . . . . . . . . . . . . . . 252.2.10 Aufgabe 10: Max Change Calculator (★★★★✩) . . . . . . . . . . . 252.2.11 Aufgabe 11: Befreundete Zahlen (★★✩✩✩) . . . . . . . . . . . . . . . 262.2.12 Aufgabe 12: Primfaktorzerlegung (★★★✩✩) . . . . . . . . . . . . . . 262.3 Lösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.3.1 Lösung 1: Grundrechenarten (★✩✩✩✩) . . . . . . . . . . . . . . . . . . 272.3.2 Lösung 2: Zahl als Text (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 292.3.3 Lösung 3: Vollkommene Zahlen (★★✩✩✩) . . . . . . . . . . . . . . . . 312.3.4 Lösung 4: Primzahlen (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 33viii Inhaltsverzeichnis2.3.5 Lösung 5: Primzahlpaare (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . 352.3.6 Lösung 6: Prüfsumme (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 392.3.7 Lösung 7: Römische Zahlen (★★★★✩) . . . . . . . . . . . . . . . . . . . 402.3.8 Lösung 8: Kombinatorik (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 432.3.9 Lösung 9: Armstrong-Zahlen (★★✩✩✩) . . . . . . . . . . . . . . . . . . 462.3.10 Lösung 10: Max Change Calculator (★★★★✩) . . . . . . . . . . . . 492.3.11 Lösung 11: Befreundete Zahlen (★★✩✩✩) . . . . . . . . . . . . . . . . 502.3.12 Lösung 12: Primfaktorzerlegung (★★★✩✩) . . . . . . . . . . . . . . . 523 Rekursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.1.1 Mathematische Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.1.2 Algorithmische Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593.1.3 Typische Probleme: Endlose Aufrufe und RecursionError 643.2 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663.2.1 Aufgabe 1: Fibonacci (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . 663.2.2 Aufgabe 2: Ziffern verarbeiten (★★✩✩✩) . . . . . . . . . . . . . . . . . 663.2.3 Aufgabe 3: ggT / GCD (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 673.2.4 Aufgabe 4: Reverse String (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . 683.2.5 Aufgabe 5: Array Sum (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 683.2.6 Aufgabe 6: Array Min (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . 683.2.7 Aufgabe 7: Konvertierungen (★★✩✩✩) . . . . . . . . . . . . . . . . . . . 693.2.8 Aufgabe 8: Exponentialfunktion (★★✩✩✩) . . . . . . . . . . . . . . . . 703.2.9 Aufgabe 9: Pascal’sches Dreieck (★★✩✩✩) . . . . . . . . . . . . . . . 713.2.10 Aufgabe 10: Zahlenpalindrome (★★★★✩) . . . . . . . . . . . . . . . . 713.2.11 Aufgabe 11: Permutationen (★★★✩✩) . . . . . . . . . . . . . . . . . . . 723.2.12 Aufgabe 12: Count Substrings (★★✩✩✩) . . . . . . . . . . . . . . . . . 723.2.13 Aufgabe 13: Lineal (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . . . 733.3 Lösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743.3.1 Lösung 1: Fibonacci (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . . 743.3.2 Lösung 2: Ziffern verarbeiten (★★✩✩✩) . . . . . . . . . . . . . . . . . . 763.3.3 Lösung 3: ggT / GCD (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . 783.3.4 Lösung 4: Reverse String (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . 803.3.5 Lösung 5: Array Sum (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . 813.3.6 Lösung 6: Array Min (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . . 833.3.7 Lösung 7: Konvertierungen (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . 843.3.8 Lösung 8: Exponentialfunktion (★★✩✩✩) . . . . . . . . . . . . . . . . . 873.3.9 Lösung 9: Pascal’sches Dreieck (★★✩✩✩) . . . . . . . . . . . . . . . 903.3.10 Lösung 10: Zahlenpalindrome (★★★★✩) . . . . . . . . . . . . . . . . . 933.3.11 Lösung 11: Permutationen (★★★✩✩) . . . . . . . . . . . . . . . . . . . . 963.3.12 Lösung 12: Count Substrings (★★✩✩✩) . . . . . . . . . . . . . . . . . . 993.3.13 Lösung 13: Lineal (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102Inhaltsverzeichnis ix4 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1054.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1054.2 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114.2.1 Aufgabe 1: Zahlenumwandlungen (★★✩✩✩) . . . . . . . . . . . . . . 1114.2.2 Aufgabe 2: Joiner (★✩✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114.2.3 Aufgabe 3: Reverse String (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . 1124.2.4 Aufgabe 4: Palindrom (★★★✩✩). . . . . . . . . . . . . . . . . . . . . . . . . 1124.2.5 Aufgabe 5: No Duplicate Chars (★★★✩✩) . . . . . . . . . . . . . . . . 1134.2.6 Aufgabe 6: Doppelte Buchstaben entfernen (★★★✩✩) . . . . . 1134.2.7 Aufgabe 7: Capitalize (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . 1144.2.8 Aufgabe 8: Rotation (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . . 1154.2.9 Aufgabe 9: Wohlgeformte Klammern (★★✩✩✩) . . . . . . . . . . . 1154.2.10 Aufgabe 10: Anagramm (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 1164.2.11 Aufgabe 11: Morse Code (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . 1164.2.12 Aufgabe 12: Pattern Checker (★★✩✩✩) . . . . . . . . . . . . . . . . . . 1174.2.13 Aufgabe 13: Tennis-Punktestand (★★★✩✩) . . . . . . . . . . . . . . . 1174.2.14 Aufgabe 14: Versionsnummern (★★✩✩✩) . . . . . . . . . . . . . . . . 1184.2.15 Aufgabe 15: Konvertierung str_to_number (★★✩✩✩) . . . . 1184.2.16 Aufgabe 16: Print Tower (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . 1194.2.17 Aufgabe 17: Gefüllter Rahmen (★★✩✩✩) . . . . . . . . . . . . . . . . . 1194.2.18 Aufgabe 18: Vokale raten (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . 1194.3 Lösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1204.3.1 Lösung 1: Zahlenumwandlungen (★★✩✩✩) . . . . . . . . . . . . . . . 1204.3.2 Lösung 2: Joiner (★✩✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234.3.3 Lösung 3: Reverse String (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . 1244.3.4 Lösung 4: Palindrom (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . 1264.3.5 Lösung 5: No Duplicate Chars (★★★✩✩) . . . . . . . . . . . . . . . . . 1294.3.6 Lösung 6: Doppelte Buchstaben entfernen (★★★✩✩) . . . . . . 1314.3.7 Lösung 7: Capitalize (★★✩✩✩). . . . . . . . . . . . . . . . . . . . . . . . . . 1324.3.8 Lösung 8: Rotation (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1364.3.9 Lösung 9: Wohlgeformte Klammern (★★✩✩✩) . . . . . . . . . . . . 1374.3.10 Lösung 10: Anagramm (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 1394.3.11 Lösung 11: Morse Code (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . 1404.3.12 Lösung 12: Pattern Checker (★★✩✩✩) . . . . . . . . . . . . . . . . . . . 1424.3.13 Lösung 13: Tennis-Punktestand (★★★✩✩) . . . . . . . . . . . . . . . . 1444.3.14 Lösung 14: Versionsnummern (★★✩✩✩) . . . . . . . . . . . . . . . . . 1474.3.15 Lösung 15: Konvertierung str_to_number (★★✩✩✩) . . . . . 1484.3.16 Lösung 16: Print Tower (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . . 1514.3.17 Lösung 17: Gefüllter Rahmen (★★✩✩✩) . . . . . . . . . . . . . . . . . 1534.3.18 Lösung 18: Vokale raten (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . 154x Inhaltsverzeichnis5 Basisdatenstrukturen: Listen, Sets und Dictionaries . . . . . . . . . . . 1575.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1575.1.1 Sequenzielle Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1575.1.2 Listen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1595.1.3 Mengen (Sets) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1635.1.4 Schlüssel-Wert-Abbildungen (Dictionaries) . . . . . . . . . . . . . . . . 1645.1.5 Der Stack als LIFO-Datenstruktur . . . . . . . . . . . . . . . . . . . . . . . . 1665.1.6 Die Queue als FIFO-Datenstruktur . . . . . . . . . . . . . . . . . . . . . . . 1675.2 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1715.2.1 Aufgabe 1: Gemeinsame Elemente (★★✩✩✩). . . . . . . . . . . . . 1715.2.2 Aufgabe 2: Eigener Stack (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . 1715.2.3 Aufgabe 3: List Reverse (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . 1715.2.4 Aufgabe 4: Duplikate entfernen (★★✩✩✩) . . . . . . . . . . . . . . . . 1725.2.5 Aufgabe 5: Maximaler Gewinn (★★★✩✩) . . . . . . . . . . . . . . . . . 1725.2.6 Aufgabe 6: Längstes Teilstück (★★★✩✩) . . . . . . . . . . . . . . . . . 1735.2.7 Aufgabe 7: Wohlgeformte Klammern (★★✩✩✩) . . . . . . . . . . . 1735.2.8 Aufgabe 8: Pascal’sches Dreieck (★★★✩✩) . . . . . . . . . . . . . . . 1745.2.9 Aufgabe 9: Check Magic Triangle (★★★✩✩) . . . . . . . . . . . . . . 1745.2.10 Aufgabe 10: Häufigste Elemente (★★✩✩✩) . . . . . . . . . . . . . . . 1755.2.11 Aufgabe 11: Addition von Ziffern (★★★✩✩) . . . . . . . . . . . . . . . 1755.2.12 Aufgabe 12: List Merge (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 1765.2.13 Aufgabe 13: Excel Magic Select (★★✩✩✩) . . . . . . . . . . . . . . . 1765.2.14 Aufgabe 14: Stack Based Queue (★★✩✩✩) . . . . . . . . . . . . . . . 1775.3 Lösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1785.3.1 Lösung 1: Gemeinsame Elemente (★★✩✩✩) . . . . . . . . . . . . . 1785.3.2 Lösung 2: Eigener Stack (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . 1805.3.3 Lösung 3: List Reverse (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 1815.3.4 Lösung 4: Duplikate entfernen (★★✩✩✩) . . . . . . . . . . . . . . . . . 1845.3.5 Lösung 5: Maximaler Gewinn (★★★✩✩) . . . . . . . . . . . . . . . . . . 1865.3.6 Lösung 6: Längstes Teilstück (★★★✩✩) . . . . . . . . . . . . . . . . . . 1885.3.7 Lösung 7: Wohlgeformte Klammern (★★✩✩✩) . . . . . . . . . . . . 1905.3.8 Lösung 8: Pascal’sches Dreieck (★★★✩✩). . . . . . . . . . . . . . . . 1945.3.9 Lösung 9: Check Magic Triangle (★★★✩✩) . . . . . . . . . . . . . . . 1965.3.10 Lösung 10: Häufigste Elemente (★★✩✩✩) . . . . . . . . . . . . . . . . 1995.3.11 Lösung 11: Addition von Ziffern (★★★✩✩) . . . . . . . . . . . . . . . . 2005.3.12 Lösung 12: List Merge (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 2045.3.13 Lösung 13: Excel Magic Select (★★✩✩✩) . . . . . . . . . . . . . . . . 2085.3.14 Lösung 14: Stack Based Queue (★★✩✩✩) . . . . . . . . . . . . . . . 210Inhaltsverzeichnis xi6 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2136.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2136.1.1 Eindimensionale Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2146.1.2 Mehrdimensionale Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2226.1.3 Typische Fehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2276.1.4 Besonderheiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286.1.5 Rekapitulation: NumPy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2296.2 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356.2.1 Aufgabe 1: Gerade vor ungeraden Zahlen (★★✩✩✩) . . . . . . . 2356.2.2 Aufgabe 2: Flip (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356.2.3 Aufgabe 3: Palindrom (★★✩✩✩). . . . . . . . . . . . . . . . . . . . . . . . . 2356.2.4 Aufgabe 4: Inplace Rotate (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . 2366.2.5 Aufgabe 5: Jewels Board Init (★★★✩✩) . . . . . . . . . . . . . . . . . . 2366.2.6 Aufgabe 6: Jewels Board Erase Diamonds (★★★★✩) . . . . . . 2386.2.7 Aufgabe 7: Spiral-Traversal (★★★★✩) . . . . . . . . . . . . . . . . . . . . 2396.2.8 Aufgabe 8: Add One to Array As Number (★★✩✩✩). . . . . . . . 2396.2.9 Aufgabe 9: Sudoku-Checker (★★★✩✩) . . . . . . . . . . . . . . . . . . . 2406.2.10 Aufgabe 10: Flood-Fill (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 2416.2.11 Aufgabe 11: Array Min und Max (★★✩✩✩) . . . . . . . . . . . . . . . . 2426.2.12 Aufgabe 12: Array Split (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . . 2436.2.13 Aufgabe 13: Minesweeper Board (★★★✩✩) . . . . . . . . . . . . . . . 2446.3 Lösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2466.3.1 Lösung 1: Gerade vor ungeraden Zahlen (★★✩✩✩) . . . . . . . . 2466.3.2 Lösung 2: Flip (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2506.3.3 Lösung 3: Palindrom (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . 2536.3.4 Lösung 4: Inplace Rotate (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . 2556.3.5 Lösung 5: Jewels Board Init (★★★✩✩) . . . . . . . . . . . . . . . . . . . 2596.3.6 Lösung 6: Jewels Board Erase Diamonds (★★★★✩) . . . . . . . 2656.3.7 Lösung 7: Spiral-Traversal (★★★★✩) . . . . . . . . . . . . . . . . . . . . . 2736.3.8 Lösung 8: Add One to Array As Number (★★✩✩✩) . . . . . . . . 2776.3.9 Lösung 9: Sudoku-Checker (★★★✩✩) . . . . . . . . . . . . . . . . . . . 2786.3.10 Lösung 10: Flood-Fill (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . 2836.3.11 Lösung 11: Array Min und Max (★★✩✩✩) . . . . . . . . . . . . . . . . 2876.3.12 Lösung 12: Array Split (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 2906.3.13 Lösung 13: Minesweeper Board (★★★✩✩) . . . . . . . . . . . . . . . 294xii InhaltsverzeichnisII Fortgeschrittenere und kniffligere Themen 3017 Rekursion Advanced . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3037.1 Memoization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3037.1.1 Memoization für Fibonacci-Zahlen . . . . . . . . . . . . . . . . . . . . . . . . 3037.1.2 Memoization für Pascal’sches Dreieck . . . . . . . . . . . . . . . . . . . . 3057.1.3 Memoization mit Python-Bordmitteln . . . . . . . . . . . . . . . . . . . . . . 3077.2 Backtracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3117.2.1 n-Damen-Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3117.3 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3157.3.1 Aufgabe 1: Türme von Hanoi (★★★✩✩) . . . . . . . . . . . . . . . . . . 3157.3.2 Aufgabe 2: Edit Distance (★★★★✩) . . . . . . . . . . . . . . . . . . . . . . 3167.3.3 Aufgabe 3: Longest Common Subsequence (★★★✩✩) . . . . . 3167.3.4 Aufgabe 4: Weg aus Labyrinth (★★★✩✩) . . . . . . . . . . . . . . . . . 3177.3.5 Aufgabe 5: Sudoku-Solver (★★★★✩) . . . . . . . . . . . . . . . . . . . . 3187.3.6 Aufgabe 6: Math Operator Checker (★★★★✩) . . . . . . . . . . . . . 3197.3.7 Aufgabe 7: Wassereimer-Problem (★★★✩✩) . . . . . . . . . . . . . . 3207.3.8 Aufgabe 8: Alle Palindrom-Teilstrings (★★★★✩) . . . . . . . . . . . 3217.3.9 Aufgabe 9: n-Damen-Problem (★★★✩✩) . . . . . . . . . . . . . . . . . 3217.4 Lösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3227.4.1 Lösung 1: Türme von Hanoi (★★★✩✩) . . . . . . . . . . . . . . . . . . . 3227.4.2 Lösung 2: Edit Distance (★★★★✩). . . . . . . . . . . . . . . . . . . . . . . 3277.4.3 Lösung 3: Longest Common Subsequence (★★★✩✩) . . . . . . 3307.4.4 Lösung 4: Weg aus Labyrinth (★★★✩✩) . . . . . . . . . . . . . . . . . . 3347.4.5 Lösung 5: Sudoku-Solver (★★★★✩) . . . . . . . . . . . . . . . . . . . . . 3377.4.6 Lösung 6: Math Operator Checker (★★★★✩). . . . . . . . . . . . . . 3447.4.7 Lösung 7: Wassereimer-Problem (★★★★✩). . . . . . . . . . . . . . . 3477.4.8 Lösung 8: Alle Palindrom-Teilstrings (★★★★✩) . . . . . . . . . . . . 3507.4.9 Lösung 9: n-Damen-Problem (★★★✩✩) . . . . . . . . . . . . . . . . . . 3548 Binärbäume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3618.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3618.1.1 Aufbau, Begrifflichkeiten und Anwendungsbeispiele . . . . . . . . 3618.1.2 Binärbäume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3628.1.3 Binärbäume mit Ordnung: binäre Suchbäume . . . . . . . . . . . . . 3638.1.4 Traversierungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3658.1.5 Balancierte Bäume und weitere Eigenschaften . . . . . . . . . . . . . 3678.1.6 Bäume für die Beispiele und Übungsaufgaben . . . . . . . . . . . . . 3698.2 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3718.2.1 Aufgabe 1: Tree Traversal (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . 3718.2.2 Aufgabe 2: In-, Pre- und Postorder iterativ (★★★★✩) . . . . . . . 3718.2.3 Aufgabe 3: Tree-Höhe berechnen (★★✩✩✩) . . . . . . . . . . . . . . 3718.2.4 Aufgabe 4: Kleinster gemeinsamer Vorfahre (★★★✩✩) . . . . . 372Inhaltsverzeichnis xiii8.2.5 Aufgabe 5: Breadth-First (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . 3728.2.6 Aufgabe 6: Level Sum (★★★★✩) . . . . . . . . . . . . . . . . . . . . . . . . 3738.2.7 Aufgabe 7: Tree Rotate (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . . 3738.2.8 Aufgabe 8: Rekonstruktion (★★★✩✩) . . . . . . . . . . . . . . . . . . . . 3748.2.9 Aufgabe 9: Math Evaluation (★★✩✩✩) . . . . . . . . . . . . . . . . . . . 3748.2.10 Aufgabe 10: Symmetrie (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 3758.2.11 Aufgabe 11: Check Binary Search Tree (★★✩✩✩) . . . . . . . . . 3768.2.12 Aufgabe 12: Vollständigkeit (★★★★★) . . . . . . . . . . . . . . . . . . . . 3768.2.13 Aufgabe 13: Tree Printer (★★★★★) . . . . . . . . . . . . . . . . . . . . . . 3788.3 Lösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3818.3.1 Lösung 1: Tree Traversal (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . 3818.3.2 Lösung 2: In-, Pre- und Postorder iterativ (★★★★✩) . . . . . . . . 3838.3.3 Lösung 3: Tree-Höhe berechnen (★★✩✩✩) . . . . . . . . . . . . . . . 3908.3.4 Lösung 4: Kleinster gemeinsamer Vorfahre (★★★✩✩) . . . . . . 3918.3.5 Lösung 5: Breadth-First (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . . 3948.3.6 Lösung 6: Level Sum (★★★★✩) . . . . . . . . . . . . . . . . . . . . . . . . . 3968.3.7 Lösung 7: Tree Rotate (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 3998.3.8 Lösung 8: Rekonstruktion (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . 4028.3.9 Lösung 9: Math Evaluation (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . 4078.3.10 Lösung 10: Symmetrie (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 4088.3.11 Lösung 11: Check Binary Search Tree (★★✩✩✩) . . . . . . . . . . 4138.3.12 Lösung 12: Vollständigkeit (★★★★★). . . . . . . . . . . . . . . . . . . . . 4158.3.13 Lösung 13: Tree Printer (★★★★★) . . . . . . . . . . . . . . . . . . . . . . . 4239 Suchen und Sortieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4339.1 Einführung Suchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4339.1.1 Binärsuche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4359.2 Einführung Sortieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4369.2.1 Insertion Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4369.2.2 Selection Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4389.2.3 Merge Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4409.2.4 Quick Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4419.2.5 Bucket Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4439.2.6 Schlussgedanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4449.3 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4459.3.1 Aufgabe 1: Contains All (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 4459.3.2 Aufgabe 2: Partitionierung (★★★★✩). . . . . . . . . . . . . . . . . . . . . 4459.3.3 Aufgabe 3: Binärsuche (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 4469.3.4 Aufgabe 4: Insertion Sort (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . 4469.3.5 Aufgabe 5: Selection Sort (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . 4479.3.6 Aufgabe 6: Quick Sort (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 4479.3.7 Aufgabe 7: Bucket Sort (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . 4489.3.8 Aufgabe 8: Suche in rotierten Daten (★★★★✩) . . . . . . . . . . . . 448xiv Inhaltsverzeichnis9.4 Lösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4509.4.1 Lösung 1: Contains All (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 4509.4.2 Lösung 2: Partitionierung (★★★★✩) . . . . . . . . . . . . . . . . . . . . . 4519.4.3 Lösung 3: Binärsuche (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 4539.4.4 Lösung 4: Insertion Sort (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . 4569.4.5 Lösung 5: Selection Sort (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . 4579.4.6 Lösung 6: Quick Sort (★★★✩✩) . . . . . . . . . . . . . . . . . . . . . . . . . 4589.4.7 Lösung 7: Bucket Sort (★★✩✩✩) . . . . . . . . . . . . . . . . . . . . . . . . 4609.4.8 Lösung 8: Suche in rotierten Daten (★★★★✩) . . . . . . . . . . . . . 46110 Schlusswort und ergänzende Literatur . . . . . . . . . . . . . . . . . . . . . . . . 46710.1 Schlusswort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46710.1.1 Gelerntes pro Kapitel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46710.1.2 Bedenkenswertes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46910.2 Knobelaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47110.2.1 Goldsäcke – Fälschung entdecken . . . . . . . . . . . . . . . . . . . . . . . 47110.2.2 Pferderennen – schnellste drei Pferde ermitteln . . . . . . . . . . . . 47210.3 Ergänzende Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475III Anhang 479A Kurzeinführung Pytest. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481A.1 Schreiben und Ausführen von Tests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481A.1.1 Installation von Pytest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481A.1.2 Beispiel: Ein erster Unit Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482A.1.3 Ausführen von Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482A.1.4 Behandlung erwarteter Exceptions . . . . . . . . . . . . . . . . . . . . . . . 484A.1.5 Parametrisierte Tests mit Pytest . . . . . . . . . . . . . . . . . . . . . . . . . . 485A.2 Weiterführende Literatur zu Pytest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486B Kurzeinführung Dekoratoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487C Schnelleinstieg O-Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493C.1 Abschätzungen mit der O-Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493C.1.1 Komplexitätsklassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494C.1.2 Komplexität und Programmlaufzeit . . . . . . . . . . . . . . . . . . . . . . . 496Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499

      Recently viewed products

      © 2026 Book Curl

        • American Express
        • Apple Pay
        • Diners Club
        • Discover
        • Google Pay
        • Maestro
        • Mastercard
        • PayPal
        • Shop Pay
        • Union Pay
        • Visa

        Login

        Forgot your password?

        Don't have an account yet?
        Create account