tvl-depot/scratch
William Carroll 6989c3a91a Implement the Rabin Karp string matching algorithm
This algorithm is pretty interesting because it runs in linear time with respect
to the length of the `corpus` string. It does this by using a sliding window
hash. This hash -- because it's a sliding window -- runs in constant time for
each iteration; we're only adding and subtracting one character each time and
not re-hashing the whole "window".

When our hashes match, only then do we compare the "window" to the
`pattern`. String comparisons are linear because they compare each character to
each character one at a time. But because we only compare strings when are
hashes match (a check which runs in constant time), this spares us the
performance hit.
2020-11-16 17:14:08 +00:00
..
advent-of-code-2019 Move AOC into //scratch 2020-07-20 10:06:40 +01:00
crack_the_coding_interview Tidy up structure of briefcase 2020-02-12 16:58:29 +00:00
data_structures_and_algorithms Impl part 3/3 for Memo 2020-07-01 15:13:56 +01:00
deepmind Drop support for dir-locals.nix, <nixpkgs>, etc. 2020-08-20 11:26:32 +01:00
facebook Implement the Rabin Karp string matching algorithm 2020-11-16 17:14:08 +00:00
groceries Ignore comments in output for grocery export 2020-10-03 11:00:11 +01:00
habit-screens Style habit screen to accommodate footer 2020-11-12 11:19:30 +00:00
haskell-programming-from-first-principles Drop support for dir-locals.nix, <nixpkgs>, etc. 2020-08-20 11:26:32 +01:00
README.md Tidy up structure of briefcase 2020-02-12 16:58:29 +00:00

Scratch

The purpose of the scratch directory is to host practice exercises. Practice encompasses things like working on data structures and algorithms problems for upcoming coding interviews or general aptitude as well as writing code snippets to help me learn a new programming language or understand an unfamiliar concept.