A collection of Python programs demonstrating programming principles and algorithms, including recursion, generators, lambda functions, first-class functions, OOP, list comprehensions, and classic algorithms such as the Sieve of Eratosthenes
Each exercise is self-contained with its own README explaining the concept, approach, and how to run it.
| Exercise | Concept |
|---|---|
| fibonacci | Recursion, iteration, memoization, timing |
| recursion | Recursive vs iterative factorial |
| generators | yield, generator expressions, infinite sequences |
| lambda-functions | Anonymous functions, sort keys |
| functions-as-objects | First-class functions, higher-order functions |
| classes | OOP, __init__, __str__, __eq__ |
| list-comprehensions | Comprehensions, 2D list pitfall |
| named-tuples | collections.namedtuple |
| defaultdict | collections.defaultdict, missing keys |
| unpacking | Tuple/list unpacking, *args, zip |
| itertools-chain | Combining iterables, flattening |
| sieve-of-eratosthenes | Prime generation, optimised sieve |
| monty-hall | Probability simulation |
| roman-numerals | String processing, greedy algorithm |
| pascal-triangle | Dynamic programming, formatted output |
| eight-puzzle | BFS, state space search |
| coin-systems | Greedy algorithm |