Astronomy (6) · Cryptography (16) · Games (14) · Graphs (5) · Interview Questions (3) · Logic (3) · Mathematics (21) · Parsing (7) · Prime Numbers (22) · Puzzles (12) · Sorting and Searching (22) · Spelling (6) · Strings (9) · Unix V7 (10)
| Astronomy | |||||
| 10 | 24 Feb 2009 | Mardi Gras: Compute the date of Easter | exercise solution codepad | ||
| 15 | 13 Mar 2009 | Friday, the Thirteenth: A small calendar library, and a simple use of it | exercise solution codepad | ||
| 88 | 24 Nov 2009 | Sunrise, Sunset: Calculate the times of sunrise and sunset on any day anywhere in the world | exercise solution codepad | ||
| 98 | 01 Jan 2010 | Cal: Print a twelve-month calendar | exercise solution codepad | ||
| 104 | 22 Jan 2010 | Phases Of The Moon: Calculate the number of days since the last new moon | exercise solution codepad | ||
| 123 | 30 Mar 2010 | Passover: Calculate the dates of the Jewish holidays Rosh Hashanah and Passover | exercise solution codepad | ||
| Cryptography | |||||
| 6 | 20 Feb 2009 | ROT13: A simple Caesar-shift cipher | exercise solution codepad | ||
| 12 | 03 Mar 2009 | Creation: Cryptanalysis of a Vigenère cipher | exercise solution codepad | ||
| 20 | 31 Mar 2009 | Rail-Fence Cipher: A simple transposition cipher | exercise solution codepad | ||
| 37 | 29 May 2009 | Double Transposition Cipher: A simple and effective cipher, easy to perform by hand | exercise solution codepad | ||
| 47 | 03 Jul 2009 | The Playfair Cipher: A classic military field cipher | exercise solution codepad | ||
| 50 | 14 Jul 2009 | The Daily Cryptogram: Solve a monoalphabetic substitution cipher | exercise solution codepad | ||
| 57 | 07 Aug 2009 | ADFGX: A classic German military field cipher from the First World War | exercise solution codepad | ||
| 60 | 18 Aug 2009 | Blum Blum Shub: Stream cipher based on a cryptographically secure pseudo-random number generator | exercise solution codepad | ||
| 65 | 04 Sep 2009 | Ron’s Cipher #4: Stream cipher by Ron Rivest that underlies the SSL and WEP protocols | exercise solution codepad | ||
| 76 | 13 Oct 2009 | Bifid: A simple but effective fractionating cipher, never used militarily | exercise solution codepad | ||
| 91 | 04 Dec 2009 | Autokey: A cipher in which the input text forms part of the key | exercise solution codepad | ||
| 94 | 15 Dec 2009 | Affine-Shift Cipher: A cryptographically weak but mathematically interesting cipher | exercise solution codepad | ||
| 106 | 29 Jan 2010 | Straddling Checkerboard: An alternative to the Polybius square for ciphers that must convert letters to digits | exercise solution codepad | ||
| 147 | 06 Jul 2010 | Chaocipher: First look at a ninety-two year old autokey-type cipher | exercise solution codepad | ||
| 163 | 31 Aug 2010 | Data Encryption Standard: Part 1: Basic block enciphering and deciphering using DES | exercise solution codepad | ||
| 164 | 03 Sep 2010 | Data Encryption Standard: Part 2: ECB, CBC, CFB and OFB block modes for DES and other block ciphers | exercise solution codepad | ||
| Games | |||||
| 3 | 19 Feb 2009 | Bingo: Calculate the probability of winning at Bingo | exercise solution codepad | ||
| 4 | 19 Feb 2009 | Sudoku: A backtracking solution to everybody’s favorite puzzle | exercise solution codepad | ||
| 11 | 27 Feb 2009 | Mark V. Shaney: Generate parodies of a text using a Markov chain | exercise solution codepad | ||
| 17 | 20 Mar 2009 | Dodgson's Doublets: A word game invented by the author of Alice in Wonderland | exercise solution codepad | ||
| 36 | 26 May 2009 | Word Search Solver: A computerized implementation of a popular time-waster | exercise solution codepad | ||
| 38 | 02 Jun 2009 | Pig Latin: A simple exercise to solve a children’s game | exercise solution codepad | ||
| 86 | 17 Nov 2009 | Master Mind, Part 1: Referee a two-player game of deductive logic | exercise solution codepad | ||
| 87 | 20 Nov 2009 | Master Mind, Part 2: Solve a Master Mind puzzle in five probes or less | exercise solution codepad | ||
| 100 | 08 Jan 2010 | Nim: A two-player game of mathematical logic | exercise solution codepad | ||
| 121 | 23 Mar 2010 | Texas Hold ‘Em: Find the best poker hand | exercise solution codepad | ||
| 133 | 04 May 2010 | Spectacular Seven: Compute the odds at jai alai | exercise solution codepad | ||
| 145 | 29 Jun 2010 | World Cup Prognostication: Simulate the knockout stage using elo ratings | exercise solution codepad | ||
| 149 | 13 Jul 2010 | Word Cube: A game to form words from a given set of letters | exercise solution codepad | ||
| 153 | 27 Jul 2010 | HAMURABI.BAS: Manage grain and land in ancient Sumeria | exercise solution codepad | ||
| Graphs | |||||
| 118 | 12 Mar 2010 | Traveling Salesman: Brute Force: Examine all possible permutations to find the least-cost tour | exercise solution codepad | ||
| 119 | 16 Mar 2010 | Traveling Salesman: Nearest Neighbor: A greedy heuristic that builds a path by always choosing the nearest unvisited point | exercise solution codepad | ||
| 125 | 06 Apr 2010 | Minimum Spanning Tree: Kruskal’s Algorithm: Find the minimum-cost tree that includes all the nodes in a graph | exercise solution codepad | ||
| 126 | 09 Apr 2010 | Minimum Spanning Tree: Prim’s Algorithm: Find the minimum-cost tree that includes all the nodes in a graph | exercise solution codepad | ||
| 127 | 13 Apr 2010 | Traveling Salesman: Minimum Spanning Tree: Heuristic guarantees solution within factor of two of optimal tour | exercise solution codepad | ||
| Interview Questions | |||||
| 46 | 30 Jun 2009 | Steve Yegge’s Phone-Screen Coding Exercises: A simple set of programming exercises based on a blog entry by Steve Yegge | exercise solution codepad | ||
| 137 | 01 Jun 2010 | Unwrapping A Spiral: An exercise in recursion | exercise solution codepad | ||
| 152 | 23 Jul 2010 | Happy Numbers: Iterating the sum of the squares of the digits terminates with one | exercise solution codepad | ||
| Logic | |||||
| 7 | 20 Feb 2009 | Multiple Dwellings: A simple logic puzzle, solved with the amb non-deterministic operator |
exercise solution codepad | ||
| 42 | 16 Jun 2009 | Who Owns The Zebra?: A logic puzzle, solved by embedding a Prolog-like logic system in Scheme | exercise solution codepad | ||
| 79 | 23 Oct 2009 | Mr. S. and Mr. P.: A logic puzzle popularized by John McCarthy | exercise solution codepad | ||
| Mathematics | |||||
| 19 | 27 Mar 2009 | A Turing Machine Simulator: An interpreter for a single-tape, multi-symbol turing machine | exercise solution codepad | ||
| 21 | 03 Apr 2009 | Programming the Turing Machine: A turing-machine program to multiply two numbers | exercise solution codepad | ||
| 33 | 15 May 2009 | Cellular Automata: Linear cellular automata as described by Stephen Wolfram in his book A New Kind of Science | exercise solution codepad | ||
| 48 | 07 Jul 2009 | Modular Arithmetic: A function library for performing modular addition, subtraction, multiplication, division, and square root | exercise solution codepad | ||
| 49 | 10 Jul 2009 | The Golden Ratio: Evaluate a continued fraction, based on my daughter’s math homework | exercise solution codepad | ||
| 51 | 17 Jul 2009 | International Mathematical Olympiad: Three exercises from 1960s math competitions | exercise solution codepad | ||
| 54 | 28 Jul 2009 | Elliptic Curves: Library of basic functions on elliptic curves | exercise solution codepad | ||
| 72 | 29 Sep 2009 | Green Eyes: A counting problem from high-school math | exercise solution codepad | ||
| 75 | 09 Oct 2009 | Calculating Pi: Calculate the value of π by monte-carlo methods and by an Archimedean method | exercise solution codepad | ||
| 95 | 18 Dec 2009 | Calculating Logarithms: Use the methods of Newton and Euler to calculate square roots and logarithms | exercise solution codepad | ||
| 101 | 12 Jan 2010 | Calculating Sines: Calculate sines using Taylor series and the triple-angle formula, by Bill Cruise | exercise solution codepad | ||
| 102 | 15 Jan 2010 | Three Binary Algorithms: Multiplication, division and greatest common divisor using binary arithmetic | exercise solution codepad | ||
| 109 | 09 Feb 2010 | Numerical Integration: Quadrature by the rectangular, trapezoidal and Simpson’s method, including adaptive quadrature | exercise solution codepad | ||
| 134 | 07 May 2010 | Integer Logarithms: An improved algorithm is O(log n) instead of O(n) | exercise solution codepad | ||
| 135 | 25 May 2010 | GB_FLIP: Donald Knuth’s portable, high-quality random-number generator from the Stanford Graphbase | exercise solution codepad | ||
| 143 | 22 Jun 2010 | Matrix Operations: Matrix addition, scalar multiplication, multiplication and transposition | exercise solution codepad | ||
| 151 | 20 Jul 2010 | Solving Systems Of Linear Equations: Matrix operations LU-decomposition and LUP-decomposition | exercise solution codepad | ||
| 154 | 30 Jul 2010 | Fibonacci Numbers: Three algorithms taking exponential time, linear time, and logarithmic time | exercise solution codepad | ||
| 156 | 06 Aug 2010 | Two Powering Predicates: Determine if a number is a square or a prime power | exercise solution codepad | ||
| 158 | 13 Aug 2010 | E: A simple simulation with a surprising ending | exercise solution codepad | ||
| 162 | 27 Aug 2010 | Chinese Remainders: An ancient application of modular inverses | exercise solution codepad | ||
| Parsing | |||||
| 0 | 19 Feb 2009 | RPN Calculator: Evaluate numeric expressions at the command line | exercise solution codepad | ||
| 67 | 11 Sep 2009 | Beautiful Code: A simple regular-expression matcher by Rob Pike | exercise solution codepad | ||
| 68 | 15 Sep 2009 | Regular Expressions, Part 1: A parser for regular expressions | exercise solution codepad | ||
| 69 | 18 Sep 2009 | Regular Expressions, Part 2: The corresponding matcher | exercise solution codepad | ||
| 70 | 22 Sep 2009 | Regular Expressions, Part 3: A regular expression test suite | exercise solution codepad | ||
| 71 | 25 Sep 2009 | Grep: Simple version of the classic unix regular-expression matching utility | exercise solution codepad | ||
| 128 | 16 Apr 2010 | Expression Evaluation: Parse and evaluate an arithmetic expression with plus, minus, times, divide and parentheses | exercise solution codepad | ||
| Prime Numbers | |||||
| 2 | 19 Feb 2009 | Sieve of Eratosthenes: A Scheme implementation of an ancient algorithm | exercise solution codepad | ||
| 29 | 01 May 2009 | Primality Checking: A probabilistic primality checker by Gary Miller and Michael Rabin | exercise solution codepad | ||
| 31 | 08 May 2009 | Wheel Factorization: Find the factors of a number by a variant of trial division | exercise solution codepad | ||
| 34 | 19 May 2009 | Fermat’s Method: Integer factorization by Fermat’s algorithm | exercise solution codepad | ||
| 43 | 19 Jun 2009 | Monte Carlo Factorization: Integer factorization via Pollard’s rho algorithm | exercise solution codepad | ||
| 52 | 21 Jul 2009 | Pollard’s P−1 Factorization Algorithm: A simple factorization algorithm by John Pollard | exercise solution codepad | ||
| 55 | 31 Jul 2009 | Elliptic Curve Factorization: A very simple implementation of elliptic curve factorization | exercise solution codepad | ||
| 56 | 04 Aug 2009 | Lenstra’s Algorithm: Hendrik Lenstra’s original algorithm for elliptic curve factorization | exercise solution codepad | ||
| 105 | 26 Jan 2010 | Primality Checking, Revisited: The Baillie-Wagstaff algorithm for primality checking | exercise solution codepad | ||
| 107 | 02 Feb 2010 | Proving Primality: A deterministic, not probabilistic, method of checking primality | exercise solution codepad | ||
| 108 | 05 Feb 2010 | Segmented Sieve Of Eratosthenes: Extend the Sieve of Eratosthenes to large ranges of integers | exercise solution codepad | ||
| 110 | 12 Feb 2010 | Sieve of Atkin: A modern alternative to the Sieve of Eratosthenes for computing prime numbers | exercise solution codepad | ||
| 112 | 19 Feb 2010 | Sieve Of Atkin, Improved: A faster version of the Sieve of Atkin | exercise solution codepad | ||
| 115 | 02 Mar 2010 | Goldbach’s Conjecture: Every even number greater than two can be written as the sum of two primes | exercise solution codepad | ||
| 120 | 19 Mar 2010 | Extending Pollard’s P−1 Factorization Algorithm: Add a second stage to allow larger factorizations | exercise solution codepad | ||
| 122 | 26 Mar 2010 | The Next Prime: Efficiently find the next prime number larger than a given number | exercise solution codepad | ||
| 130 | 23 Apr 2010 | Modern Elliptic Curve Factorization, Part 1: Elliptic arithmetic using Montgomery’s parameterization | exercise solution codepad | ||
| 131 | 27 Apr 2010 | Modern Elliptic Curve Factorization, Part 2: Elliptic arithmetic using Montgomery’s parameterization | exercise solution codepad | ||
| 132 | 30 Apr 2010 | Integer Factorization: Combine trial division, Pollard’s rho and p−1 methods, and elliptic curves into a single factorization program | exercise solution codepad | ||
| 138 | 04 Jun 2010 | Williams’ P+1 Factorization Algorithm: A factorization algorithm, similar to Pollard’s p−1 algorithm | exercise solution codepad | ||
| 161 | 24 Aug 2010 | Daniel Shanks’ Square Form Factorization Algorithm: A simple and very fast factorization algorithm for integers between 105 and 1020 | exercise solution codepad | ||
| 162 | 27 Aug 2010 | Chinese Remainders: An ancient application of modular inverses | exercise solution codepad | ||
| Puzzles | |||||
| 7 | 20 Feb 2009 | Multiple Dwellings: A simple logic puzzle, solved with the amb non-deterministic operator |
exercise solution codepad | ||
| 24 | 14 Apr 2009 | Google Treasure Hunt 2008 Puzzle 4: A prime-number puzzle | exercise solution codepad | ||
| 41 | 12 Jun 2009 | Feynman’s Puzzle: A simple logic puzzle | exercise solution codepad | ||
| 42 | 16 Jun 2009 | Who Owns The Zebra?: A logic puzzle, solved by embedding a Prolog-like logic system in Scheme | exercise solution codepad | ||
| 51 | 17 Jul 2009 | International Mathematical Olympiad: Three exercises from 1960s math competitions | exercise solution codepad | ||
| 53 | 24 Jul 2009 | Let’s Make A Deal!: Simulate a tricky probability calculation | exercise solution codepad | ||
| 79 | 23 Oct 2009 | Mr. S. and Mr. P.: A logic puzzle popularized by John McCarthy | exercise solution codepad | ||
| 89 | 27 Nov 2009 | $7.11: A math puzzle: a+b+c+d = a×b×c×d = 7.11 | exercise solution codepad | ||
| 99 | 05 Jan 2010 | The Sum Of Two Squares: A math puzzle with a solution by Dijkstra | exercise solution codepad | ||
| 129 | 20 Apr 2010 | 145 Puzzle: Build and evaluate expressions using the digits one through nine and the simple arithmetic operators | exercise solution codepad | ||
| 158 | 13 Aug 2010 | E: A simple simulation with a surprising ending | exercise solution codepad | ||
| 162 | 27 Aug 2010 | Chinese Remainders: An ancient application of modular inverses | exercise solution codepad | ||
| Sorting and Searching | |||||
| 18 | 23 Mar 2009 | Binary Search: A simple task, easy to get wrong | exercise solution codepad | ||
| 22 | 07 Apr 2009 | Flipping Pancakes: A sorting method analyzed by Bill Gates | exercise solution codepad | ||
| 25 | 17 Apr 2009 | Spell Checking: A spell-checker in a trie-based dictionary | exercise solution codepad | ||
| 26 | 21 Apr 2009 | Probabilistic Spell Checking: A probabilistic spell-checker based on a Bloom filter | exercise solution codepad | ||
| 30 | 05 May 2009 | Priority Queues: A simple library implementation of the priority queue data structure | exercise solution codepad | ||
| 39 | 05 Jun 2009 | Ternary Search Tries: Build a function library for handling ternary search tries | exercise solution codepad | ||
| 45 | 26 Jun 2009 | Treaps: A randomized dictionary data structure, provides in-order access to key | exercise solution codepad | ||
| 59 | 14 Aug 2009 | Pairing Heaps: A standard algorithm for maintaining priority queues | exercise solution codepad | ||
| 73 | 02 Oct 2009 | Red-Black Trees: A purely functional dictionary data structure based on approximately-balanced trees | exercise solution codepad | ||
| 77 | 16 Oct 2009 | Growable Arrays: Arrays that grow and shrink at run-time, with O(log n) complexity per operation | exercise solution codepad | ||
| 78 | 20 Oct 2009 | Shuffle: Create random permutations of an array or linked list | exercise solution codepad | ||
| 80 | 27 Oct 2009 | Three Quadratic Sorts: Bubble sort, selection sort and insertion sort | exercise solution codepad | ||
| 81 | 30 Oct 2009 | Two Sub-Quadratic Sorts: Comb sort and shell sort | exercise solution codepad | ||
| 82 | 03 Nov 2009 | Quick Sort: Tony Hoare’s divide-and-conquer sorting algorithm | exercise solution codepad | ||
| 83 | 06 Nov 2009 | Heap Sort: A guaranteed O(log n) sorting method based on priority queues | exercise solution codepad | ||
| 84 | 10 Nov 2009 | Merge Sort: A fast, stable sorting algorithm, especially well-suited to linked lists | exercise solution codepad | ||
| 85 | 13 Nov 2009 | Two linear sorts: Count sort and radix sort exploit the structure of integer keys | exercise solution codepad | ||
| 93 | 11 Dec 2009 | Selection: Find the kth-largest item in a list | exercise solution codepad | ||
| 111 | 16 Feb 2010 | Soundex: An algorithm to assign people’s last names to equivalence classes based on similar spelling | exercise solution codepad | ||
| 113 | 23 Feb 2010 | Engineering A Sort Function: A high-performance quicksort by Jon Bentley and Doug McIlroy | exercise solution codepad | ||
| 116 | 05 Mar 2010 | Binary Search Tree: Classic data structure, providing insert, delete and lookup for ordered datatypes | exercise solution codepad | ||
| 160 | 20 Aug 2010 | Marriage Sort: A sub-quadratic sort similar to shell sort or comb sort | exercise solution codepad | ||
| Spelling | |||||
| 23 | 10 Apr 2009 | Anagrams: Find anagrams in a dictionary | exercise solution codepad | ||
| 25 | 17 Apr 2009 | Spell Checking: A spell-checker in a trie-based dictionary | exercise solution codepad | ||
| 26 | 21 Apr 2009 | Probabilistic Spell Checking: A probabilistic spell-checker based on a Bloom filter | exercise solution codepad | ||
| 27 | 24 Apr 2009 | Word Hy-phen-a-tion By Com-pu-ter: Frank Liang’s hyphenation algorithm, used in TeX | exercise solution codepad | ||
| 66 | 08 Sep 2009 | Porter Stemming: Martin Porter’s algorithm for removing suffices from word stems | exercise solution codepad | ||
| 97 | 29 Dec 2009 | A Statisticle Speling Korrecter: Peter Norvig’s version of the Google spelling suggester | exercise solution codepad | ||
| Strings | |||||
| 61 | 21 Aug 2009 | String Search: Brute Force: Search for a pattern in a text by comparing the pattern to the text at all possible positions | exercise solution codepad | ||
| 62 | 25 Aug 2009 | String Search: Knuth-Morris-Pratt: Search for a pattern in a text using an O(n) algorithm | exercise solution codepad | ||
| 63 | 28 Aug 2009 | String Search: Boyer-Moore: Search for a pattern in a text using a fast and simple algorithm | exercise solution codepad | ||
| 64 | 01 Sep 2009 | String Search: Rabin-Karp: Our final classic string-search algorithm | exercise solution codepad | ||
| 67 | 11 Sep 2009 | Beautiful Code: A simple regular-expression matcher by Rob Pike | exercise solution codepad | ||
| 68 | 15 Sep 2009 | Regular Expressions, Part 1: A parser for regular expressions | exercise solution codepad | ||
| 69 | 18 Sep 2009 | Regular Expressions, Part 2: The corresponding matcher | exercise solution codepad | ||
| 70 | 22 Sep 2009 | Regular Expressions, Part 3: A regular expression test suite | exercise solution codepad | ||
| 71 | 25 Sep 2009 | Grep: Simple version of the classic unix regular-expression matching utility | exercise solution codepad | ||
| Unix V7 | |||||
| 14 | 10 Mar 2009 | Word Frequencies: Our interpretation of a problem solved by a classic unix pipeline | exercise solution codepad | ||
| 25 | 17 Apr 2009 | Spell Checking: A spell-checker in a trie-based dictionary | exercise solution codepad | ||
| 26 | 21 Apr 2009 | Probabilistic Spell Checking: A probabilistic spell-checker based on a Bloom filter | exercise solution codepad | ||
| 71 | 25 Sep 2009 | Grep: Simple version of the classic unix regular-expression matching utility | exercise solution codepad | ||
| 92 | 08 Dec 2009 | Word Count: An implementation of the unix wc program |
exercise solution codepad | ||
| 136 | 28 May 2010 | Printing Files: A simple program to list files, similar to the unix pr program | exercise solution codepad | ||
| 139 | 08 Jun 2010 | Diff: Find the differences between two text files | exercise solution codepad | ||
| 141 | 15 Jun 2010 | Natural Join: The fundamental relational database operator | exercise solution codepad | ||
| 142 | 18 Jun 2010 | Parsing Command-Line Arguments: An old-style getopt function | exercise solution codepad | ||
| 159 | 17 Aug 2010 | Cut: Select fields or characters from input lines | exercise solution codepad | ||