100 days of algorithms
Switch branches/tags
Nothing to show
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
resource day 96 Jun 28, 2017
.gitignore day 0 Mar 24, 2017
README.md corrected minor typo Jul 9, 2017
bonus - fast convex hull.ipynb bonus Jul 2, 2017
day 00 - logo.ipynb day 01 Mar 25, 2017
day 01 - hanoi tower.ipynb day 01 Mar 25, 2017
day 02 - matrix chain multiplication.ipynb day 02 Mar 26, 2017
day 03 - next permutation.ipynb day 03 Mar 27, 2017
day 04 - counting 1-bits.ipynb day 04 Mar 28, 2017
day 05 - eratosthenes sieve.ipynb day 05 Mar 29, 2017
day 06 - postfix notation.ipynb day 06 Mar 30, 2017
day 07 - binary addition FSA.ipynb day 07 Mar 31, 2017
day 08 - binary search.ipynb day 08 Apr 1, 2017
day 09 - monte carlo - pi.ipynb day 09 Apr 2, 2017
day 10 - karatsuba multiplication.ipynb day 10 Apr 3, 2017
day 11 - McCarthy 91.ipynb day 11 Apr 4, 2017
day 12 - roots of polynomial.ipynb day 12 Apr 5, 2017
day 13 - extended euclidean algorithm.ipynb day 13 Apr 6, 2017
day 14 - huffman codes.ipynb day 14 Apr 7, 2017
day 15 - breaking OTP.ipynb day 15 Apr 8, 2017
day 16 - no-condition swap.ipynb day 16 Apr 9, 2017
day 17 - perceptron.ipynb day 17 Apr 10, 2017
day 18 - monopoly.ipynb day 18 Apr 11, 2017
day 19 - counting inversions.ipynb day 19 Apr 12, 2017
day 20 - linearithmic multiplication.ipynb day 20 Apr 13, 2017
day 21 - k-means.ipynb day 21 Apr 14, 2017
day 22 - determinant.ipynb day 22 Apr 15, 2017
day 23 - sudoku.ipynb day 23 Apr 16, 2017
day 24 - closest pair.ipynb day 24 Apr 17, 2017
day 25 - conjugate gradients.ipynb day 25 Apr 18, 2017
day 26 - karger's mincut.ipynb day 26 Apr 19, 2017
day 27 - spiral matrix.ipynb day 27 Apr 20, 2017
day 28 - convex hull.ipynb day 28 Apr 21, 2017
day 29 - string searching.ipynb day 29 Apr 22, 2017
day 30 - strassen multiplication.ipynb day 30 Apr 23, 2017
day 31 - timeit.ipynb day 31 Apr 24, 2017
day 32 - pagerank.ipynb day 32 Apr 25, 2017
day 33 - reservoir sampling.ipynb day 33 Apr 26, 2017
day 34 - aho-corasick.ipynb day 34 Apr 27, 2017
day 35 - median.ipynb day 35 Apr 28, 2017
day 36 - bulls and cows.ipynb day 36 Apr 29, 2017
day 37 - longest common subsequence.ipynb day 37 Apr 30, 2017
day 38 - burrows-wheeler.ipynb day 38 May 1, 2017
day 39 - 4sum.ipynb day 39 May 2, 2017
day 40 - counting ones.ipynb day 40 May 3, 2017
day 41 - union-find.ipynb day 41 May 4, 2017
day 42 - hamming codes.ipynb day 42 May 5, 2017
day 43 - shuffle.ipynb day 43 May 6, 2017
day 44 - gradient approximation.ipynb day 44 May 7, 2017
day 45 - binary search tree.ipynb day 45 May 8, 2017
day 46 - bézier curve.ipynb day 46 May 9, 2017
day 47 - factoradic.ipynb day 47 May 10, 2017
day 48 - dijkstra.ipynb day 48 May 11, 2017
day 49 - ford-fulkerson.ipynb day 49 - update due to change in networkx api (2.1) May 11, 2018
day 50 - game of life.ipynb day 50 (fix for bokeh 0.12.5) May 13, 2017
day 51 - rabin-miller.ipynb day 51 May 14, 2017
day 52 - RSA.ipynb day 52 May 15, 2017
day 53 - RSA encryption scheme.ipynb day 53 May 16, 2017
day 54 - longest unique sequence.ipynb day 54 May 17, 2017
day 55 - quincunx.ipynb day 55 May 18, 2017
day 56 - lzw.ipynb day 56 May 19, 2017
day 57 - quicksort.ipynb day 57 May 20, 2017
day 58 - integer exponentation.ipynb day 58 May 21, 2017
day 59 - colored tiling.ipynb day 59 May 22, 2017
day 60 - bloom filter.ipynb day 60 May 23, 2017
day 61 - hanoi tower II.ipynb day 61 May 24, 2017
day 62 - linked-list cycle.ipynb day 62 May 25, 2017
day 63 - zig-zag.ipynb day 63 May 26, 2017
day 64 - k-clique.ipynb day 64 May 27, 2017
day 65 - floyd-warshall.ipynb day 65 May 28, 2017
day 66 - gram-schmidt.ipynb day 66 May 29, 2017
day 67 - linked-list mergesort.ipynb day 67 May 30, 2017
day 68 - gale-shapley.ipynb day 68 May 31, 2017
day 69 - rmsprop.ipynb day 69 Jun 1, 2017
day 70 - deadlock.ipynb day 70 Jun 2, 2017
day 71 - hashtable - chaining.ipynb day 71 Jun 3, 2017
day 72 - hashtable - open addressing.ipynb day 72 Jun 4, 2017
day 73 - bresenhams line.ipynb day 73 Jun 5, 2017
day 74 - google interview question.ipynb day 74 Jun 6, 2017
day 75 - merkles puzzles.ipynb day 75 Jun 7, 2017
day 76 - 2-3 tree.ipynb day 76 Jun 8, 2017
day 77 - unification.ipynb day 77 Jun 9, 2017
day 78 - horn-satifiability.ipynb day 78 Jun 10, 2017
day 79 - logistic regression.ipynb day 79 Jun 11, 2017
day 80 - hopfield net.ipynb day 80 Jun 12, 2017
day 81 - topological sort.ipynb day 81 Jun 13, 2017
day 82 - flood fill.ipynb day 82 Jun 14, 2017
day 83 - breaking AES.ipynb day 83 (fix parsing JSON in 3.5/3.6) Jun 15, 2017
day 84 - maze generation.ipynb day 84 Jun 16, 2017
day 85 - coin success runs.ipynb day 85 (fix for numpy version; missing float_power) Jun 17, 2017
day 86 - binary heap.ipynb day 86 Jun 18, 2017
day 87 - gray code.ipynb day 87 Jun 19, 2017
day 88 - perlin noise.ipynb day 88 Jun 20, 2017
day 89 - bipartiteness.ipynb day 89 Jun 21, 2017
day 90 - simple nim - AI.ipynb day 90 Jun 22, 2017
day 91 - variations.ipynb day 91 Jun 23, 2017
day 92 - PCA.ipynb day 92 Jun 24, 2017
day 93 - first and follow.ipynb day 93 Jun 25, 2017
day 94 - earley parser.ipynb day 94 Jun 26, 2017
day 95 - strongly connected components.ipynb day 95 Jun 27, 2017
day 96 - floyd-steinberg.ipynb day 96 Jun 28, 2017
day 97 - locally weighted regression.ipynb day 97 (fix for inotebook widget) Jun 29, 2017
day 98 - romberg integration.ipynb day 98 Jun 30, 2017
day 99 - simplex.ipynb day 99 Jul 1, 2017
day I00 - segmented eratosthenes sieve.ipynb day 100 Jul 2, 2017

README.md

100 days of algorithms

This repository contains notebooks with live code to accompany 100 days of algorithms challenge.

I set the challenge for myself to implement algorithm by algorithm, day by day, until the number reaches 100.

If you are interested, here's the intro to the series and all the articles sorted by date from the latest.

The challenge was quite fun and rough, as well. Do not expect the implementations to be the best, nor fastest, nor nicest, nor bug-free. Do expect to see code written in haste. A code that contains the same amount of enthusiasm and love to algorithms as many it contains bugs.

Feel free to (re)use my code in any way you wish, but bare in mind that the source code is provided "as-is". It is on your own risk and you are solely responsible for whatever happens then.

local machine

  • download and install the latest version of Anaconda distribution
  • clone the repo: git clone https://github.com/coells/100days.git
  • open terminal and run Jupyter notebook: jupyter notebook
  • open localhost:8888 in your browser

notes

  • the codebase was developed using Python 3.6 and Anaconda 4.3.1
  • notebooks containing Bokeh plots are not directly supported by Github; you better clone the repo a run notebooks locally

alternate repository

Microsoft Azure Notebooks with Python 3.5 support