This repository contains implementations (as notebooks) in Python3 for a challenge inspired by Tomáš Bouda's 100 days of algorithms. You can check Tomáš' challenge here.
The goal of this challenge is to provide a clear (and if possible effiecient) implementation of 365 different algorithms (a new one each day).
Every piece of code is released under GNU GPL v3.0
To run any notebook on your own machine you'll need Python3, Jupyter Notebook and to clone this repository (and possibly Anaconda for missing libraries: numpy, scipy, ...).
Implementations:
- Towers of Hanoi
- Matrix chain multiplication
- Next permutation
- Miler-Rabin primality test
- Sieve of Eratosthenes
- Pollard's rho algorithm
- Voronoi diagrams
- 2-colorability
- Prim's Minimum Spanning Tree
- Karatsuba multiplication
- Closest pair of points
- Z algorithm + string matching
- Move-to-front algorithm
- Forward Euler
- Quicksort
- Stable marriage - Gale-Shapley
- Running median - 2 heaps
- Selection algorithm
- Huffman encoding/decoding
- Counting inversions - Fenwick tree
- Burrows-Wheeler transform