
Python Challenge
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
More details
Other editions
Additional editions


Person
Content
- Cover
- Über den Autor
- Titel
- Impressum
- Widmung
- Inhaltsverzeichnis
- 1 Einleitung
- 1.1 Aufbau der Kapitel
- 1.2 Grundgerüst des PyCharm-Projekts
- 1.3 Grundgerüst für die Unit Tests mit PyTest
- 1.4 Anmerkung zum Programmierstil
- 1.5 Anmerkung zu den Aufgaben
- 1.6 Ausprobieren der Beispiele und Lösungen
- I Grundlagen
- 2 Mathematische Aufgaben
- 2.1 Einführung
- 2.1.1 Römische Zahlen
- 2.1.2 Zahlenspielereien
- 2.2 Aufgaben
- 2.2.1 Aufgabe 1: Grundrechenarten
- 2.2.2 Aufgabe 2: Zahl als Text
- 2.2.3 Aufgabe 3: Vollkommene Zahlen
- 2.2.4 Aufgabe 4: Primzahlen
- 2.2.5 Aufgabe 5: Primzahlpaare
- 2.2.6 Aufgabe 6: Prüfsumme
- 2.2.7 Aufgabe 7: Römische Zahlen
- 2.2.8 Aufgabe 8: Kombinatorik
- 2.2.9 Aufgabe 9: Armstrong-Zahlen
- 2.2.10 Aufgabe 10: Max Change Calculator
- 2.2.11 Aufgabe 11: Befreundete Zahlen
- 2.2.12 Aufgabe 12: Primfaktorzerlegung
- 2.3 Lösungen
- 2.3.1 Lösung 1: Grundrechenarten
- 2.3.2 Lösung 2: Zahl als Text
- 2.3.3 Lösung 3: Vollkommene Zahlen
- 2.3.4 Lösung 4: Primzahlen
- 2.3.5 Lösung 5: Primzahlpaare
- 2.3.6 Lösung 6: Prüfsumme
- 2.3.7 Lösung 7: Römische Zahlen
- 2.3.8 Lösung 8: Kombinatorik
- 2.3.9 Lösung 9: Armstrong-Zahlen
- 2.3.10 Lösung 10: Max Change Calculator
- 2.3.11 Lösung 11: Befreundete Zahlen
- 2.3.12 Lösung 12: Primfaktorzerlegung
- 3 Rekursion
- 3.1 Einführung
- 3.1.1 Mathematische Beispiele
- 3.1.2 Algorithmische Beispiele
- 3.1.3 Typische Probleme: Endlose Aufrufe und RecursionError
- 3.2 Aufgaben
- 3.2.1 Aufgabe 1: Fibonacci
- 3.2.2 Aufgabe 2: Ziffern verarbeiten
- 3.2.3 Aufgabe 3: ggT / GCD
- 3.2.4 Aufgabe 4: Reverse String
- 3.2.5 Aufgabe 5: Array Sum
- 3.2.6 Aufgabe 6: Array Min
- 3.2.7 Aufgabe 7: Konvertierungen
- 3.2.8 Aufgabe 8: Exponentialfunktion
- 3.2.9 Aufgabe 9: Pascal'sches Dreieck
- 3.2.10 Aufgabe 10: Zahlenpalindrome
- 3.2.11 Aufgabe 11: Permutationen
- 3.2.12 Aufgabe 12: Count Substrings
- 3.2.13 Aufgabe 13: Lineal
- 3.3 Lösungen
- 3.3.1 Lösung 1: Fibonacci
- 3.3.2 Lösung 2: Ziffern verarbeiten
- 3.3.3 Lösung 3: ggT / GCD
- 3.3.4 Lösung 4: Reverse String
- 3.3.5 Lösung 5: Array Sum
- 3.3.6 Lösung 6: Array Min
- 3.3.7 Lösung 7: Konvertierungen
- 3.3.8 Lösung 8: Exponentialfunktion
- 3.3.9 Lösung 9: Pascal'sches Dreieck
- 3.3.10 Lösung 10: Zahlenpalindrome
- 3.3.11 Lösung 11: Permutationen
- 3.3.12 Lösung 12: Count Substrings
- 3.3.13 Lösung 13: Lineal
- 4 Strings
- 4.1 Einführung
- 4.2 Aufgaben
- 4.2.1 Aufgabe 1: Zahlenumwandlungen
- 4.2.2 Aufgabe 2: Joiner
- 4.2.3 Aufgabe 3: Reverse String
- 4.2.4 Aufgabe 4: Palindrom
- 4.2.5 Aufgabe 5: No Duplicate Chars
- 4.2.6 Aufgabe 6: Doppelte Buchstaben entfernen
- 4.2.7 Aufgabe 7: Capitalize
- 4.2.8 Aufgabe 8: Rotation
- 4.2.9 Aufgabe 9: Wohlgeformte Klammern
- 4.2.10 Aufgabe 10: Anagramm
- 4.2.11 Aufgabe 11: Morse Code
- 4.2.12 Aufgabe 12: Pattern Checker
- 4.2.13 Aufgabe 13: Tennis-Punktestand
- 4.2.14 Aufgabe 14: Versionsnummern
- 4.2.15 Aufgabe 15: Konvertierung str_to_number
- 4.2.16 Aufgabe 16: Print Tower
- 4.2.17 Aufgabe 17: Gefüllter Rahmen
- 4.2.18 Aufgabe 18: Vokale raten
- 4.3 Lösungen
- 4.3.1 Lösung 1: Zahlenumwandlungen
- 4.3.2 Lösung 2: Joiner
- 4.3.3 Lösung 3: Reverse String
- 4.3.4 Lösung 4: Palindrom
- 4.3.5 Lösung 5: No Duplicate Chars
- 4.3.6 Lösung 6: Doppelte Buchstaben entfernen
- 4.3.7 Lösung 7: Capitalize
- 4.3.8 Lösung 8: Rotation
- 4.3.9 Lösung 9: Wohlgeformte Klammern
- 4.3.10 Lösung 10: Anagramm
- 4.3.11 Lösung 11: Morse Code
- 4.3.12 Lösung 12: Pattern Checker
- 4.3.13 Lösung 13: Tennis-Punktestand
- 4.3.14 Lösung 14: Versionsnummern
- 4.3.15 Lösung 15: Konvertierung str_to_number
- 4.3.16 Lösung 16: Print Tower
- 4.3.17 Lösung 17: Gefüllter Rahmen
- 4.3.18 Lösung 18: Vokale raten
- 5 Basisdatenstrukturen: Listen, Sets und Dictionaries
- 5.1 Einführung
- 5.1.1 Sequenzielle Datentypen
- 5.1.2 Listen
- 5.1.3 Mengen (Sets)
- 5.1.4 Schlüssel-Wert-Abbildungen (Dictionaries)
- 5.1.5 Der Stack als LIFO-Datenstruktur
- 5.1.6 Die Queue als FIFO-Datenstruktur
- 5.2 Aufgaben
- 5.2.1 Aufgabe 1: Gemeinsame Elemente
- 5.2.2 Aufgabe 2: Eigener Stack
- 5.2.3 Aufgabe 3: List Reverse
- 5.2.4 Aufgabe 4: Duplikate entfernen
- 5.2.5 Aufgabe 5: Maximaler Gewinn
- 5.2.6 Aufgabe 6: Längstes Teilstück
- 5.2.7 Aufgabe 7: Wohlgeformte Klammern
- 5.2.8 Aufgabe 8: Pascal'sches Dreieck
- 5.2.9 Aufgabe 9: Check Magic Triangle
- 5.2.10 Aufgabe 10: Häufigste Elemente
- 5.2.11 Aufgabe 11: Addition von Ziffern
- 5.2.12 Aufgabe 12: List Merge
- 5.2.13 Aufgabe 13: Excel Magic Select
- 5.2.14 Aufgabe 14: Stack Based Queue
- 5.3 Lösungen
- 5.3.1 Lösung 1: Gemeinsame Elemente
- 5.3.2 Lösung 2: Eigener Stack
- 5.3.3 Lösung 3: List Reverse
- 5.3.4 Lösung 4: Duplikate entfernen
- 5.3.5 Lösung 5: Maximaler Gewinn
- 5.3.6 Lösung 6: Längstes Teilstück
- 5.3.7 Lösung 7: Wohlgeformte Klammern
- 5.3.8 Lösung 8: Pascal'sches Dreieck
- 5.3.9 Lösung 9: Check Magic Triangle
- 5.3.10 Lösung 10: Häufigste Elemente
- 5.3.11 Lösung 11: Addition von Ziffern
- 5.3.12 Lösung 12: List Merge
- 5.3.13 Lösung 13: Excel Magic Select
- 5.3.14 Lösung 14: Stack Based Queue
- 6 Arrays
- 6.1 Einführung
- 6.1.1 Eindimensionale Arrays
- 6.1.2 Mehrdimensionale Arrays
- 6.1.3 Typische Fehler
- 6.1.4 Besonderheiten
- 6.1.5 Rekapitulation: NumPy
- 6.2 Aufgaben
- 6.2.1 Aufgabe 1: Gerade vor ungeraden Zahlen
- 6.2.2 Aufgabe 2: Flip
- 6.2.3 Aufgabe 3: Palindrom
- 6.2.4 Aufgabe 4: Inplace Rotate
- 6.2.5 Aufgabe 5: Jewels Board Init
- 6.2.6 Aufgabe 6: Jewels Board Erase Diamonds
- 6.2.7 Aufgabe 7: Spiral-Traversal
- 6.2.8 Aufgabe 8: Add One to Array As Number
- 6.2.9 Aufgabe 9: Sudoku-Checker
- 6.2.10 Aufgabe 10: Flood-Fill
- 6.2.11 Aufgabe 11: Array Min und Max
- 6.2.12 Aufgabe 12: Array Split
- 6.2.13 Aufgabe 13: Minesweeper Board
- 6.3 Lösungen
- 6.3.1 Lösung 1: Gerade vor ungeraden Zahlen
- 6.3.2 Lösung 2: Flip
- 6.3.3 Lösung 3: Palindrom
- 6.3.4 Lösung 4: Inplace Rotate
- 6.3.5 Lösung 5: Jewels Board Init
- 6.3.6 Lösung 6: Jewels Board Erase Diamonds
- 6.3.7 Lösung 7: Spiral-Traversal
- 6.3.8 Lösung 8: Add One to Array As Number
- 6.3.9 Lösung 9: Sudoku-Checker
- 6.3.10 Lösung 10: Flood-Fill
- 6.3.11 Lösung 11: Array Min und Max
- 6.3.12 Lösung 12: Array Split
- 6.3.13 Lösung 13: Minesweeper Board
- II Fortgeschrittenere und kniffligere Themen
- 7 Rekursion Advanced
- 7.1 Memoization
- 7.1.1 Memoization für Fibonacci-Zahlen
- 7.1.2 Memoization für Pascal'sches Dreieck
- 7.1.3 Memoization mit Python-Bordmitteln
- 7.2 Backtracking
- 7.2.1 n-Damen-Problem
- 7.3 Aufgaben
- 7.3.1 Aufgabe 1: Türme von Hanoi
- 7.3.2 Aufgabe 2: Edit Distance
- 7.3.3 Aufgabe 3: Longest Common Subsequence
- 7.3.4 Aufgabe 4: Weg aus Labyrinth
- 7.3.5 Aufgabe 5: Sudoku-Solver
- 7.3.6 Aufgabe 6: Math Operator Checker
- 7.3.7 Aufgabe 7: Wassereimer-Problem
- 7.3.8 Aufgabe 8: Alle Palindrom-Teilstrings
- 7.3.9 Aufgabe 9: n-Damen-Problem
- 7.4 Lösungen
- 7.4.1 Lösung 1: Türme von Hanoi
- 7.4.2 Lösung 2: Edit Distance
- 7.4.3 Lösung 3: Longest Common Subsequence
- 7.4.4 Lösung 4: Weg aus Labyrinth
- 7.4.5 Lösung 5: Sudoku-Solver
- 7.4.6 Lösung 6: Math Operator Checker
- 7.4.7 Lösung 7: Wassereimer-Problem
- 7.4.8 Lösung 8: Alle Palindrom-Teilstrings
- 7.4.9 Lösung 9: n-Damen-Problem
- 8 Binärbäume
- 8.1 Einführung
- 8.1.1 Aufbau, Begrifflichkeiten und Anwendungsbeispiele
- 8.1.2 Binärbäume
- 8.1.3 Binärbäume mit Ordnung: binäre Suchbäume
- 8.1.4 Traversierungen
- 8.1.5 Balancierte Bäume und weitere Eigenschaften
- 8.1.6 Bäume für die Beispiele und Übungsaufgaben
- 8.2 Aufgaben
- 8.2.1 Aufgabe 1: Tree Traversal
- 8.2.2 Aufgabe 2: In-, Pre- und Postorder iterativ
- 8.2.3 Aufgabe 3: Tree-Höhe berechnen
- 8.2.4 Aufgabe 4: Kleinster gemeinsamer Vorfahre
- 8.2.5 Aufgabe 5: Breadth-First
- 8.2.6 Aufgabe 6: Level Sum
- 8.2.7 Aufgabe 7: Tree Rotate
- 8.2.8 Aufgabe 8: Rekonstruktion
- 8.2.9 Aufgabe 9: Math Evaluation
- 8.2.10 Aufgabe 10: Symmetrie
- 8.2.11 Aufgabe 11: Check Binary Search Tree
- 8.2.12 Aufgabe 12: Vollständigkeit
- 8.2.13 Aufgabe 13: Tree Printer
- 8.3 Lösungen
- 8.3.1 Lösung 1: Tree Traversal
- 8.3.2 Lösung 2: In-, Pre- und Postorder iterativ
- 8.3.3 Lösung 3: Tree-Höhe berechnen
- 8.3.4 Lösung 4: Kleinster gemeinsamer Vorfahre
- 8.3.5 Lösung 5: Breadth-First
- 8.3.6 Lösung 6: Level Sum
- 8.3.7 Lösung 7: Tree Rotate
- 8.3.8 Lösung 8: Rekonstruktion
- 8.3.9 Lösung 9: Math Evaluation
- 8.3.10 Lösung 10: Symmetrie
- 8.3.11 Lösung 11: Check Binary Search Tree
- 8.3.12 Lösung 12: Vollständigkeit
- 8.3.13 Lösung 13: Tree Printer
- 9 Suchen und Sortieren
- 9.1 Einführung Suchen
- 9.1.1 Binärsuche
- 9.2 Einführung Sortieren
- 9.2.1 Insertion Sort
- 9.2.2 Selection Sort
- 9.2.3 Merge Sort
- 9.2.4 Quick Sort
- 9.2.5 Bucket Sort
- 9.2.6 Schlussgedanken
- 9.3 Aufgaben
- 9.3.1 Aufgabe 1: Contains All
- 9.3.2 Aufgabe 2: Partitionierung
- 9.3.3 Aufgabe 3: Binärsuche
- 9.3.4 Aufgabe 4: Insertion Sort
- 9.3.5 Aufgabe 5: Selection Sort
- 9.3.6 Aufgabe 6: Quick Sort
- 9.3.7 Aufgabe 7: Bucket Sort
- 9.3.8 Aufgabe 8: Suche in rotierten Daten
- 9.4 Lösungen
- 9.4.1 Lösung 1: Contains All
- 9.4.2 Lösung 2: Partitionierung
- 9.4.3 Lösung 3: Binärsuche
- 9.4.4 Lösung 4: Insertion Sort
- 9.4.5 Lösung 5: Selection Sort
- 9.4.6 Lösung 6: Quick Sort
- 9.4.7 Lösung 7: Bucket Sort
- 9.4.8 Lösung 8: Suche in rotierten Daten
- 10 Schlusswort und ergänzende Literatur
- 10.1 Schlusswort
- 10.1.1 Gelerntes pro Kapitel
- 10.1.2 Bedenkenswertes
- 10.2 Knobelaufgaben
- 10.2.1 Goldsäcke - Fälschung entdecken
- 10.2.2 Pferderennen - schnellste drei Pferde ermitteln
- 10.3 Ergänzende Literatur
- III Anhang
- A Kurzeinführung Pytest
- A.1 Schreiben und Ausführen von Tests
- A.1.1 Installation von Pytest
- A.1.2 Beispiel: Ein erster Unit Test
- A.1.3 Ausführen von Tests
- A.1.4 Behandlung erwarteter Exceptions
- A.1.5 Parametrisierte Tests mit Pytest
- A.2 Weiterführende Literatur zu Pytest
- B Kurzeinführung Dekoratoren
- C Schnelleinstieg O-Notation
- C.1 Abschätzungen mit der O-Notation
- C.1.1 Komplexitätsklassen
- C.1.2 Komplexität und Programmlaufzeit
- Literaturverzeichnis
- Index
- Fußnoten
System requirements
File format: PDF
Copy protection: Watermark-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Use the free software Adobe Reader, Adobe Digital Editions, or any other PDF viewer of your choice (see eBook Help).
- Tablet/Smartphone (Android; iOS): Install the free app Adobe Digital Editions or another reading app for eBooks, e.g., PocketBook (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Watermark-DRM, a „soft” copy protection. This means that there are no technical restrictions to prevent illegal distribution. However, there is a personalised watermark embedded in the eBook that can be used to identify the purchaser of the eBook in the event of misuse and to provide evidence for legal purposes.
For more information, see our eBook Help page.