## Exercises In Reverse Chronological Order

 491 08 Nov 2013 Two Stacks Make A Queue: Implement a queue using two stacks exercise solution codepad 490 05 Nov 2013 Two Queues Make A Stack: Implement a stack using two queues exercise solution codepad 489 29 Oct 2013 Queues: Implement a basic data structure exercise solution codepad 486 29 Oct 2013 The 16 Game: Determine the odds in a scratch-off game exercise solution codepad 485 25 Oct 2013 Pessimal Algorithms And Simplexity Analysis: The slowsort algorithm using the multiply and surrender algorithms exercise solution codepad 484 22 Oct 2013 David Gries’ Coffee Can Problem: Simulate the process of extracting beans from a coffee can exercise solution codepad 483 18 Oct 2013 Binary Tree Traversal: Traverse a binary tree in pre-order and post-order exercise solution codepad 482 15 Oct 2013 Find The Minimum Difference: Find the minimum difference between any item from on list and any item from another list exercise solution codepad 481 11 Oct 2013 Imperative-Style Linked Lists: A library of functions on imperative-style lists made from mutable pairs exercise solution codepad 480 08 Oct 2013 Functional-Style Linked Lists: A library of functions on functional-style lists made from immutable pairs exercise solution codepad 479 04 Oct 2013 Calculating Statistics: Read a file of integers and calculate mean, median and mode exercise solution codepad 478 01 Oct 2013 Lucas Sequences: Fast methods for calculating Lucas sequences, similar to Fibonacci sequences exercise solution codepad 477 27 Sep 2013 Double-Ended Priority Queues: Priority queues that permit access at both ends exercise solution codepad 476 24 Sep 2013 Finding Digit Strings In Powers Of Two: A simple exercise from one of the competitive programming sites exercise solution codepad 475 20 Sep 2013 McCarthy’s 91 Function: A recursive function designed as a test case for formal verification exercise solution codepad 474 17 Sep 2013 Smallest Consecutive Four-Factor Composites: Find consecutive numbers with four factors exercise solution codepad 473 12 Sep 2013 Diffie Hellman Key Exchange: Manage secure exchanges on an insecure communications channel exercise solution codepad 472 06 Sep 2013 Cartesian Product: Cross-product of the items in a variable-length list of variable-length lists exercise solution codepad 471 03 Sep 2013 Yet More Bit Hacks: A time-honored tradition, and useful exercise solution codepad 470 30 Aug 2013 BMI Calculator: Calculate a person’s body mass index exercise solution codepad 469 27 Aug 2013 Two Sieving Problems: Use sieves to answer two prime-number questions exercise solution codepad 468 23 Aug 2013 Three Interview Questions: Three interview questions exercise solution codepad 467 20 Aug 2013 More Bit Hacks: A time-honored tradition, and useful exercise solution codepad 466 16 Aug 2013 Monkey Grid Puzzle: How many points can the monkey access? exercise solution codepad 465 13 Aug 2013 Unix Paths: Convert relative Unix path to absolute, by Robert Fisher exercise solution codepad 464 09 Aug 2013 Bit Hacks: A time-honored tradition, and useful exercise solution codepad 463 06 Aug 2013 Sophie Germain Primes: Primes p such that 2p+1 is also prime exercise solution codepad 462 02 Aug 2013 Ordered Hash Tables: Knuth’s improvement to simple hash tables exercise solution codepad 461 30 Jul 2013 Who Buys The Croissants?: Simulate an important Friday-morning question exercise solution codepad 460 26 Jul 2013 Find X[i] = i In An Array: Find an array element equal to its index exercise solution codepad 459 23 Jul 2013 Telephone Lookup: A directory-assistance program by Mike Lesk exercise solution codepad 458 19 Jul 2013 J K Rowling: Identify an author using forensic linguistics exercise solution codepad 457 16 Jul 2013 Vampire Numbers: Numbers x * y that consist of the digits of x and y exercise solution codepad 456 12 Jul 2013 Dynamic Hash Tables: Hash tables that grow and contract automatically to maintain a constant load factor exercise solution codepad 455 05 Jul 2013 Weekdays Between Two Dates: Number of days between two dates, excluding Saturday and Sunday exercise solution codepad 454 02 Jul 2013 Decoding Text-Speak: Expnd txt wth only intl vwls and n dbld ltrs exercise solution codepad 453 28 Jun 2013 A Programming Puzzle: Write a function f so that f(f(n)) = -n for all integers n. exercise solution codepad 452 25 Jun 2013 Swap List Nodes: Swap the kth node from the beginning of a list with the kth node from the end of a list exercise solution codepad 451 21 Jun 2013 Multiple Polynomial Quadratic Sieve: A greatly improved version of the basic quadratic sieve exercise solution codepad 450 18 Jun 2013 3SUM: A classic of computer science: find three numbers in an array that sum to zero exercise solution codepad 449 14 Jun 2013 The Digits of Pi, Again: Chudnovsky’s algorithm for the digits of pi exercise solution codepad 448 11 Jun 2013 Longest Substring Of Two Unique Characters: Longest run of consecutive characters in a string that contains only two unique characters exercise solution codepad 447 07 Jun 2013 Sets: A classic data structure and associated algorithms exercise solution codepad 446 04 Jun 2013 Egyptian Fractions: An ancient method of representing fractions exercise solution codepad 445 31 May 2013 The Seven Bridges of Königsberg: A classic graph puzzle due to Leonhard Euler exercise solution codepad 444 28 May 2013 Modular Multiplication Without Overflow: Perform modular multiplication without overflowing an integer datatype exercise solution codepad 443 24 May 2013 Coin Change, Part 3: Another variant on the classic coin change problem exercise solution codepad 442 21 May 2013 Coin Change, Part 2: A variant on the classic coin change problem exercise solution codepad 441 17 May 2013 Coin Change, Part 1: Classic problem to count the ways to make change exercise solution codepad 440 14 May 2013 Optimal Alphabetical Order: Redefine the alphabet to improve alphabetical ordering exercise solution codepad 439 10 May 2013 MindCipher: Three exercises from the MindCipher puzzle website exercise solution codepad 438 07 May 2013 Three List Exercises: Three simple exercises on lists, for beginning programmers exercise solution codepad 437 03 May 2013 Pairing Students: Create sets of students, each paired to the other only once exercise solution codepad 436 30 Apr 2013 First Unrepeated Character In A String: Find the first character that appears only once in a string exercise solution codepad 435 26 Apr 2013 Correct Horse Battery Staple, Improved: Fix a horrible bug in the original version exercise solution codepad 434 23 Apr 2013 Correct Horse Battery Staple: Randall Munro’s passphrase generator exercise solution codepad 433 19 Apr 2013 Integer Roots: Calculate square roots and higher roots in integer arithmetic exercise solution codepad 432 16 Apr 2013 Date Formatting: Neatly write a date in a variety of formats exercise solution codepad 431 12 Apr 2013 Booth’s Algorithm: Determine of two cyclic lists are equal exercise solution codepad 430 09 Apr 2013 Cyclic Equality: Determine if two cyclic lists are equal exercise solution codepad 429 05 Apr 2013 Last Non-Zero Digit Of A Factorial: Find the last non-zero digit of a factorial exercise solution codepad 428 02 Apr 2013 Quadratic Sieve With Large Primes: A (slightly) improved version of the basic quadratic sieve exercise solution codepad 427 29 Mar 2013 One Million Hits: Celebrating our one-millionth hit! exercise solution codepad 426 26 Mar 2013 Google Code Jam Qualification Round Africa 2010, Revisited: Four solutions to a Google programming exercise, with various time complexities exercise solution codepad 425 22 Mar 2013 Jumping Jack: Jump in increasing sizes along the number line exercise solution codepad 424 19 Mar 2013 Quadratic Sieve: Basic version of a powerful factoring algorithm exercise solution codepad 423 15 Mar 2013 Buffon’s Needle: Compute the value of π with a simulation exercise solution codepad 422 12 Mar 2013 An Array Of Two Symbols: A learning experience for binary search exercise solution codepad 421 08 Mar 2013 Knight Moves: Move a knight around a chess board exercise solution codepad 420 05 Mar 2013 Dutch National Flag: Classic ternary sort by Edsgar Dijkstra exercise solution codepad 419 01 Mar 2013 Baillie-Wagstaff Pseudoprimality Tester: Primality test, an improvement over the Miller-Rabin test exercise solution codepad 418 26 Feb 2013 An Odd Way To Square: Square a number without using multiplication or exponentiation exercise solution codepad 417 22 Feb 2013 Floupia: Make change in a strange currency exercise solution codepad 416 19 Feb 2013 NPR Sunday Puzzle: Find two words containing the letters a, b, c, d, e and f exercise solution codepad 415 15 Feb 2013 Facebook Hacker Cup 2013, Round 1, Problem 1: Count the ways to win a card game exercise solution codepad 414 12 Feb 2013 Binary Search Tree: In-Order Predecessor And Successor: Find the previous and next items in a tree exercise solution codepad 413 08 Feb 2013 The Biggest Prime: Print all 17-million digits of the largest known prime number exercise solution codepad 412 05 Feb 2013 The 147 Puzzle: Compute all the solutions to 1/a + 1/b + 1/c + 1/d + 1/e = 1 in integers exercise solution codepad 411 01 Feb 2013 Hofstadter’s Sequence: An infinite figure-figure sequence exercise solution codepad 410 25 Jan 2013 Imperative Heaps: The classing implementation of priority queues embedded in an array exercise solution codepad 409 22 Jan 2013 Splay Heaps: Yet another implementation of priority queues exercise solution codepad 408 18 Jan 2013 Triangle Trilemma: Determine if three points form a triangle, and classify it exercise solution codepad 407 15 Jan 2013 Translate CSV To Html: Convert between tabular storage forms exercise solution codepad 406 08 Jan 2013 Floating Point Rounding: Round a floating point number to a given decimal place exercise solution codepad 405 02 Jan 2013 Four Points Determine A Square: Determine if four given points form a square exercise solution codepad 404 01 Jan 2013 Happy New Year!: Find expressions that evaluate to 2013 exercise solution codepad 403 28 Dec 2012 Three Wise Men: Find the prices of their gifts exercise solution codepad 402 25 Dec 2012 The Twelve Days of Christmas: Count the gifts of Christmas exercise solution codepad 401 21 Dec 2012 Building Primes: Build the largest prime with all right-most subsequences also prime exercise solution codepad 400 18 Dec 2012 Petals Around The Rose: A game to celebrate our 400th exercise exercise solution codepad 399 14 Dec 2012 115132219018763992565095597973971522401: Calculate the sequence of narcissistic numbers exercise solution codepad 398 11 Dec 2012 Stepwise Program Development: A Heuristic Algorithm: A backtracking solution to a problem of Wirth exercise solution codepad 397 07 Dec 2012 Wirth Problem 15.12: Compute a sequence of numbers defined by Wirth exercise solution codepad 396 04 Dec 2012 Median Of Five: A very fast method to compute the median of five items exercise solution codepad 395 30 Nov 2012 Selection, Revisited: A guaranteed linear-time algorithm for selection exercise solution codepad 394 27 Nov 2012 Amazon Interview Question: Find the hundred points of a million closest to the origin exercise solution codepad 393 23 Nov 2012 Tonelli-Shanks Algorithm: Compute modular square roots exercise solution codepad 392 20 Nov 2012 List Difference: Another algorithm on linked lists exercise solution codepad 391 16 Nov 2012 List Intersection And Union: Two algorithms on linked lists, with multiple solutions exercise solution codepad 390 13 Nov 2012 Frobenius Primality Test: A pseudoprimality test, stronger than Miller-Rabin exercise solution codepad 389 09 Nov 2012 Taxicab Numbers: Confirm an interesting observation of Srinivasa Ramanujan exercise solution codepad 388 06 Nov 2012 Fix Something Annoying: Take control of your computing environment by fixing something that annoys you exercise solution codepad 387 02 Nov 2012 Gasoline Mileage Log: Read a file of gasoline purchases to compute miles per gallon exercise solution codepad 386 30 Oct 2012 Pandigital Numbers: Find sums that include all ten digits exercise solution codepad 385 26 Oct 2012 Pythatorean Triples: Generate primitive pythagorean triples by an ancient algorithm exercise solution codepad 384 23 Oct 2012 Universal Hash Function: Compute a hash for any native Scheme datatype exercise solution codepad 383 19 Oct 2012 Prime Partitions: Compute the number of ways to sum primes to a target exercise solution codepad 382 16 Oct 2012 Version Control: Economically store multiple versions of text files exercise solution codepad 381 12 Oct 2012 Birthday Paradox: Use simulation to demonstrate the birthday paradox exercise solution codepad 380 09 Oct 2012 Two Word Games: Find words in a dictionary exercise solution codepad 379 05 Oct 2012 AKS Primality Prover, Part 2: The primality prover of Agrawal, Kayal and Saxena exercise solution codepad 378 02 Oct 2012 AKS Primality Prover, Part 1: Two functions used by the AKS primality prover exercise solution codepad 377 28 Sep 2012 Pocklington’s N−1 Primality Prover: Prove n prime if n−1 can be partially factored exercise solution codepad 376 21 Sep 2012 Autumn Equinox: Calculate the length of the day; provides a time-handling library exercise solution codepad 375 18 Sep 2012 ABC Conjecture: Demonstrate a recently-proved conjecture of number theory exercise solution codepad 374 14 Sep 2012 Tribonacci Numbers: A variant of fibonacci numbers exercise solution codepad 373 11 Sep 2012 The Sum Of The First Billion Primes: Write a prime generator, and use it exercise solution codepad 372 07 Sep 2012 The First Two Programs: Hello World and a fahrenheit / celsius conversion table exercise solution codepad 371 04 Sep 2012 Fountain Codes: Transmit files over a lossy channel exercise solution codepad 370 31 Aug 2012 Once In A Blue Moon: Find months with two full moons exercise solution codepad 369 28 Aug 2012 Random Access Lists: A clever data structure that provides O(log n) access to items in a sequential list, along with cons, head and tail exercise solution codepad 368 24 Aug 2012 Hash Tables With Open Addressing: An alternative to hash tables with chaining for collision resolution exercise solution codepad 367 21 Aug 2012 Two More Random Exercises: Two bad random number generators, the middle-square method and RANDU exercise solution codepad 366 17 Aug 2012 Two Random Exercises: Two exercises involving random numbers exercise solution codepad 365 14 Aug 2012 4SUM: Find four numbers in an array that sum to zero exercise solution codepad 364 10 Aug 2012 Minimum Scalar Product: A simple exercise from the practice round of Google Code Jam 2008 exercise solution codepad 363 07 Aug 2012 Make: The classic Unix utility for managing file dependencies exercise solution codepad 362 03 Aug 2012 SEND + MORE = MONEY, Part 2: Two hill-climbing solutions to a classic problem of recreational mathematics exercise solution codepad 361 31 Jul 2012 SEND + MORE = MONEY, Part 1: Two slow solutions to a classic problem of recreational mathematics exercise solution codepad 360 27 Jul 2012 Min Stack: Provide push and pop operations and find the minimum element in linear time exercise solution codepad 359 24 Jul 2012 Zeckendorf Representation: Find the fibonacci numbers that sum to a given number exercise solution codepad 358 20 Jul 2012 Infix Expression Evaluation: Write a parser to evaluate arithmetic expressions exercise solution codepad 357 17 Jul 2012 Breshenham’s Line-Drawing Algorithm: Draw straight lines using raster graphics exercise solution codepad 356 13 Jul 2012 The Evolution Of Flibs: Use genetic programming to build a finite state machine exercise solution codepad 355 10 Jul 2012 Sieve For Totients: Find the totients of a large range of integers using a sieve exercise solution codepad 354 06 Jul 2012 Fractran: Write an interpreter for John Horton Conway’s language Fractran exercise solution codepad 353 03 Jul 2012 Chopping Words: Form a chain of words by removing letters one at a time exercise solution codepad 352 29 Jun 2012 Sliding Median: Find the median of the most recent k items in a stream exercise solution codepad 351 26 Jun 2012 Billboard Challenge, Part 2: Second part of a Google recruiting challenge exercise solution codepad 350 22 Jun 2012 Billboard Challenge, Part 1: First part of a Google recruiting challenge exercise solution codepad 349 19 Jun 2012 Digits Of E: Two algorithms that compute the digits of e, one bounded, the other unbounded exercise solution codepad 348 15 Jun 2012 Counting Ones: Count the number of 1-digits in the numbers less than n exercise solution codepad 347 12 Jun 2012 Ordered Maps: A key/value dictionary that supports an ordering relationship exercise solution codepad 346 08 Jun 2012 Cat: The Unix V7 utility to catenate and print exercise solution codepad 345 05 Jun 2012 Binomial Heaps: Another algorithm for maintaining priority queues exercise solution codepad 344 01 Jun 2012 Square Roots: Four methods to compute square roots, including one from antiquity exercise solution codepad 344 25 May 2012 Streaming Median: Find the medians of a set of numbers as they arrive in a stream exercise solution codepad 343 25 May 2012 Ackermann’s Function: A fast-growing function that tests recursion exercise solution codepad 342 22 May 2012 Hamming Codes: Send messages over a noisy channel without error exercise solution codepad 341 18 May 2012 Formatted Numeric Output: A minimal version of C’s `printf` function exercise solution codepad 340 15 May 2012 Streaming Knapsack: Find first possible combination from a stream that sums to a given integer exercise solution codepad 339 11 May 2012 partitions: Sets of integers that sum to a given integer exercise solution codepad 338 08 May 2012 Factor Tables: Table of factors of integers exercise solution codepad 337 04 May 2012 Even-Odd Partition: Partition an array so all even integers precede all odd integers exercise solution codepad 336 01 May 2012 Legendre’s Symbol: Determine if a number is a quadratic residue mod m exercise solution codepad 335 27 Apr 2012 Trabb Pardo Knuth Algorithm: Trivial algorithm, used to explore an unfamiliar language exercise solution codepad 334 24 Apr 2012 Rhyming Dictionary: Find rhyming words for poets exercise solution codepad 333 20 Apr 2012 John Horton Conway’s Game Of Life: The classic cellular automata exercise solution codepad 332 17 Apr 2012 Twin Primes: A variant of the Sieve of Eratosthenes to find pairs of primes that differ by two exercise solution codepad 331 13 Apr 2012 McNugget Numbers, Revisited: The classic coin problem in disguise, how to count the number of ways to make change exercise solution codepad 330 10 Apr 2012 Galton: Simulate a marble-drop that forms a bell-shaped curve exercise solution codepad 329 06 Apr 2012 Voters: Watch voting blocks migrate on the screen exercise solution codepad 328 03 Apr 2012 Cornacchia’s Algorithm: Find solutions to quadratic diophantine equations exercise solution codepad 327 30 Mar 2012 Subset Sum, Meet In The Middle: An improved solution to the classic NP problem exercise solution codepad 326 27 Mar 2012 Subset Sum: Solve a classic NP problem using dynamic programming exercise solution codepad 325 23 Mar 2012 Base-26 Arithmetic: Perform arithmetic on integers represented as strings of letters exercise solution codepad 324 20 Mar 2012 Factoring Multiple RSA Keys: Exploit a key-generation weakness to factor RSA keys exercise solution codepad 323 16 Mar 2012 Sum Of Squares Of Two Largest Of Three Values: A simple problem from SICP with a variety of solutions exercise solution codepad 322 13 Mar 2012 Perfect Power Predicate: Given a positive integer n, determine if there exists a b and e for which be = n exercise solution codepad 321 09 Mar 2012 Sparse Sets: Clever data structure for storing sparse sets of small integers exercise solution codepad 320 06 Mar 2012 Union Route Cipher: Military cipher used successfully by Union forces in the American Civil War exercise solution codepad 319 02 Mar 2012 Balanced Delimiters: Determine if nested delimiters are properly balanced exercise solution codepad 318 28 Feb 2012 Next Greater Permutation Of Digits: Find the smallest number larger than the input number using the same digits as the input number exercise solution codepad 317 24 Feb 2012 Remove Characters From A String: Remove from one string any character in a second string exercise solution codepad 316 21 Feb 2012 Learn A New Language: Solve the exercise of your choice in an unfamiliar language exercise solution codepad 315 17 Feb 2012 Hailstones: Examine the Collatz sequence exercise solution codepad 314 14 Feb 2012 Divisors: Find divisors using a sieve exercise solution codepad 313 10 Feb 2012 Search In An Ascending Matrix: Find a number in a matrix where both rows and columns are sorted in ascending order exercise solution codepad 312 07 Feb 2012 Solar Compass: Determine North by sighting the Sun exercise solution codepad 311 03 Feb 2012 Roman Numeral Puzzle: Count the Roman numerals with no repeated digits exercise solution codepad 310 31 Jan 2012 String Rotation: Determine if two strings are rotations of each other exercise solution codepad 309 27 Jan 2012 Anagram Phrases: “Gin grammar prop six” is an anagram for “Programming Praxis” exercise solution codepad 308 24 Jan 2012 A Dozen Lines Of Code: Do something cool in a small space exercise solution codepad 307 20 Jan 2012 Knights On A Keypad: Count the number of knight paths on a keypad exercise solution codepad 306 17 Jan 2012 Guess The Number: Number-guessing game for children learning arithmetic exercise solution codepad 305 13 Jan 2012 Excel’s XIRR Function: Numerical calculation of a derivative exercise solution codepad 304 10 Jan 2012 Thirteen Anagram: 12+1=11+2 and “twelve plus one equals eleven plus two” are both anagrams exercise solution codepad 303 06 Jan 2012 Pritchard’s Wheel Sieve: An alternative to the Sieve of Eratosthenes with a faster asymptotic time complexity exercise solution codepad 302 03 Jan 2012 Turtle Graphics: A minimal library of turtle graphics, as in the Logo language, implemented in PostScript exercise solution codepad 301 30 Dec 2011 Split: Split a list in two halves using the tortoise-and-hare algorithm exercise solution codepad 300 27 Dec 2011 Cheating Hangman: A version of Hangman that nearly always wins exercise solution codepad 299 23 Dec 2011 Koch’s Snowflake: Draw a fractal snowflake using PostScript exercise solution codepad 298 20 Dec 2011 Hangman: Classic Unix V7 game for guessing words exercise solution codepad 297 16 Dec 2011 Majority Voting: Determine the results of an election exercise solution codepad 296 13 Dec 2011 Validating Telephone Numbers: An exercise in input validation exercise solution codepad 295 09 Dec 2011 McNugget Numbers: A simple problem, worked out on a napkin exercise solution codepad 294 06 Dec 2011 Pascal’s Triangle: Display the binomial coefficients exercise solution codepad 293 02 Dec 2011 Knight Rider: Classic problem of the knight’s tour exercise solution codepad 292 29 Nov 2011 AVL Trees, Extended: Add additional functionality to AVL trees exercise solution codepad 291 25 Nov 2011 AVL Trees: Basic implementation of the original balanced-tree algorithm exercise solution codepad 290 22 Nov 2011 Rabin’s Cryptosystem: Public-key cryptosystem, similar to RSA exercise solution codepad 289 18 Nov 2011 Grade School Multiplication: Display the steps in the grade school multiplication algorithm exercise solution codepad 288 15 Nov 2011 Phil Harvey’s Puzle: partition {1,…,16} into two sets of equal size so each subset has the same sum, sum of squares and sum of cubes exercise solution codepad 287 11 Nov 2011 Generators: Write functions that yield a value, but can then be re-entered exercise solution codepad 286 08 Nov 2011 Improved Standard Continuation: An improved version of elliptic curve factorization, widely used in current practice exercise solution codepad 285 04 Nov 2011 Craps: Simulate a popular game of gambling with dice exercise solution codepad 284 01 Nov 2011 RIP John McCarthy: Implementation of the “Maxwell’s equations of software” from the LISP 1.5 Programmer’s Manual exercise solution codepad 283 28 Oct 2011 Crypt: Simple encryption tool from Kernighan and Plauger exercise solution codepad 282 25 Oct 2011 Cksum: Unix checksum utility exercise solution codepad 281 21 Oct 2011 Sum, Revisited: SysV and Berkeley versions of the Unix V7 sum command exercise solution codepad 280 18 Oct 2011 The Wall: Ray Panko’s spreadsheet exercise exercise solution codepad 279 14 Oct 2011 The First N Primes: Embedding the Sieve of Eratosthenes in a priority queue instead of an array exercise solution codepad 279 11 Oct 2011 Tower Of Hanoi: Classic demonstration of recursion exercise solution codepad 278 07 Oct 2011 Sieve of Sundaram: Sieving for prime numbers using a method from India exercise solution codepad 277 04 Oct 2011 Brainfuck: Interpreter for a Turing-line language exercise solution codepad 276 30 Sep 2011 Logarithm Tables: Print old-fashioned tables of logarithms and anti-logarithms exercise solution codepad 275 27 Sep 2011 Statistics: Calculate the mean, standard deviation, linear regression and correlation exercise solution codepad 274 23 Sep 2011 Array Duplicates: Find the duplicate integer in a large array exercise solution codepad 273 20 Sep 2011 Project Euler Problem 3: Thorough explanation of integer factorization by trial division exercise solution codepad 272 16 Sep 2011 Pollard’s P−1 Factorization Algoritihm, Revisited: An improved second stage that is much faster than the original exercise solution codepad 271 13 Sep 2011 Tetrahedral Numbers: Find the base of the tetrahedron that contains 169179692512835000 balls exercise solution codepad 270 09 Sep 2011 Mersenne Twister: Random number generator with very long period, useful for simulations exercise solution codepad 269 06 Sep 2011 Deques: Library implementation of double-ended queues exercise solution codepad 268 02 Sep 2011 Two String Exercises: Remove duplicate characters, and squish adjacent blanks exercise solution codepad 267 30 Aug 2011 Hamming Numbers: List the numbers with no factors greater than 5, a classic problem popularized by Dijkstra exercise solution codepad 266 26 Aug 2011 Reverse Every K Nodes Of A Linked List: Reverse the elements of a sub-list exercise solution codepad 265 23 Aug 2011 Knapsack: Fill a knapsack to maximize the value of its contents exercise solution codepad 264 19 Aug 2011 First Non-Repeating Character: Find the first character in a string that doesn’t repeat later in the string exercise solution codepad 263 16 Aug 2011 Insert Into A Cyclic Sorted List: Insert a new element into a cyclic list, in order exercise solution codepad 262 12 Aug 2011 Word Breaks: Insert spaces between words: applepie => apple pie exercise solution codepad 261 09 Aug 2011 Hett’s Problem 1.28: Sorting a list of lists according to length of sublists exercise solution codepad 260 05 Aug 2011 Ninety-Nine Bottles Of Beer: The popular song exercise solution codepad 259 02 Aug 2011 The Nth Prime: The n prime, counting from p1 = 2 exercise solution codepad 258 29 Jul 2011 Approximating Pi: Approximating pi with the logarithmic integral and Riemann’s R function exercise solution codepad 257 26 Jul 2011 More Prime-Counting Functions: Prime counting functions by Meissel and Lehmer, based on Legendre’s sum exercise solution codepad 256 22 Jul 2011 Counting Primes Using Legendre’s Formula: Recreate Legendre’s two-century old calculation of the number of primes less than a million exercise solution codepad 255 19 Jul 2011 Sum Of Two Integers: Determine if two integers in a list sum to a target exercise solution codepad 254 15 Jul 2011 JSON: Writing Output: The other side of JSAON exercise solution codepad 253 12 Jul 2011 JSON: Parsing Input: Parse JSON input exercise solution codepad 252 08 Jul 2011 Vedic Divisibility: Use a method of testing divisibility using the method of osculators developed in India exercise solution codepad 251 05 Jul 2011 Big Numbers: Examples: A library for big integers: display factorials to 50, determine if a number is prime, and compute its prime factors exercise solution codepad 250 01 Jul 2011 Feet And Inches: Convert decimal inches to carpenters’ fractions exercise solution codepad 249 28 Jun 2011 Big Numbers: Functions: A library for big integers: gcd, powering, square root, random numbers exercise solution codepad 248 24 Jun 2011 Thank God It’s Friday!: Three methods to calculate the day of the week exercise solution codepad 247 21 Jun 2011 Big Numbers: Testing: A library for big integers: testing exercise solution codepad 246 17 Jun 2011 Adi Shamir’s Threshold Scheme: Use cryptography to share a secret, by Graham Enos exercise solution codepad 245 14 Jun 2011 Big Numbers: Input And Output: A library for big integers: input and output with radix conversion exercise solution codepad 244 10 Jun 2011 Steganography: A hand-operable system that combines cryptography and steganography exercise solution codepad 243 07 Jun 2011 Big Numbers: Division: A library for big integers: the grade-school algorithm for long division exercise solution codepad 242 03 Jun 2011 Mersenne Primes: The Lucas-Lehmer test for identifying primes of the form 2n−1 exercise solution codepad 241 31 May 2011 Big Numbers: Addition, Subtraction And Multiplication: A library for big integers: grade-school algorithms for addition, subtraction, and multiplication exercise solution codepad 240 27 May 2011 Upside Up: Numbers that read the same upside down exercise solution codepad 239 24 May 2011 Big Numbers: Getting Started: A library for big integers: representation, comparison, simple functions exercise solution codepad 238 20 May 2011 ISBN Validation: Validate ISBN book numbers, and fetch author and title from the internet exercise solution codepad 237 17 May 2011 Two Bad Sorts: Stooge sort and bogosort are worse than quadratic exercise solution codepad 236 13 May 2011 Dixon’s Factorization Algorithm: A slow, but theoretically important, algorithm for integer factorization exercise solution codepad 235 10 May 2011 Comm: select or reject lines common to two sorted files exercise solution codepad 234 06 May 2011 Entab And Detab: expand tabs into spaces, and replace spaces with tabs exercise solution codepad 233 03 May 2011 Squaring The Bishop: Charles Babbage’s game of word squares exercise solution codepad 232 29 Apr 2011 Rule 30 RNG: The random number generator from Mathematica, based on Stephen Wolfram’s Rule 30 cellular automata exercise solution codepad 231 26 Apr 2011 Miscellanea: FizzBuzz, Prime Words, and Split A List exercise solution codepad 230 22 Apr 2011 Xref: Programmer’s cross-reference utility exercise solution codepad 229 19 Apr 2011 Same Five Digits: A math puzzle from New Scientist, solved by guest author Bob Miller exercise solution codepad 228 15 Apr 2011 Partition Numbers: Calculate the partition numbers, using memoization via growing arrays exercise solution codepad 227 12 Apr 2011 House Of Representatives: Apportion representatives by the Huntington-Hill method exercise solution codepad 226 08 Apr 2011 Credit Card Validation: Validate decimal numbers using the Luhn algorithm exercise solution codepad 225 05 Apr 2011 Fortune: Print a random aphorism from a file exercise solution codepad 224 01 Apr 2011 Maximum Difference In An Array: Find maximum Xj &minus Xi, with i ≤ j exercise solution codepad 223 28 Mar 2011 Look And Say, Revisited: Compute Conway’s constant exercise solution codepad 222 25 Mar 2011 Sum: The standard Unix V7 file-checksum command exercise solution codepad 221 22 Mar 2011 Two Kaprekar Exercises: Kaprekar chains and Kaprekar numbers, from the Indian mathematician Dattaraya Ramchandra Kaprekar exercise solution codepad 220 18 Mar 2011 Loopy Loops: Print the numbers from 1 to 1000 without using loops or conditionals exercise solution codepad 219 15 Mar 2011 Look And Say: Calculate John Horton Conway’s "Look and Say" sequence exercise solution codepad 218 11 Mar 2011 Lowest Common Ancestor: Find the lowest node in a binary search tree that is a common ancestor to two given nodes exercise solution codepad 217 08 Mar 2011 Reverse Words: Reverse the words in an input string exercise solution codepad 216 04 Mar 2011 Chutes And Ladders: Simulate a child’s game, and compute its statistics exercise solution codepad 215 01 Mar 2011 An Early LISP Program: A program to flatten a list, from the March 1960 LISP I manual exercise solution codepad 214 25 Feb 2011 Sieve Of Euler: An alternate, and slow, method of sieving for primes exercise solution codepad 213 22 Feb 2011 Sliding Window Minimum: List of minimums sliding across an input list exercise solution codepad 212 18 Feb 2011 Two Factoring Games: Home primes and the Euclid-Mullin sequence exercise solution codepad 211 15 Feb 2011 Google Code Jam Qualification Round Africa 2010: Three simple exercises exercise solution codepad 210 11 Feb 2011 Sums Of Powers: Use Bernoulli numbers to quickly compute sums of powers exercise solution codepad 209 08 Feb 2011 The First Computer Program: Ada Lovelace’s program to compute Bernoulli numbers for Charles Babbage’s Analytical Engine exercise solution codepad 208 04 Feb 2011 Excel Columns: Numbers as in Excel column names, A=1, Z=26, IV=256 exercise solution codepad 207 01 Feb 2011 Cuckoo Hashing: A hashing system with guaranteed constant-time lookup and amortized constant-time insertion exercise solution codepad 206 28 Jan 2011 Population Count: Count the number of set bits (1-bits) in the binary representation of an integer exercise solution codepad 205 25 Jan 2011 Rational Numbers: A library of basic arithmetic and comparison of fractions exercise solution codepad 204 21 Jan 2011 Pollard Rho, Revisited: Richard Brent’s variant of John Pollard’s rho algorithm for integer factorization exercise solution codepad 203 18 Jan 2011 Solitaire Cipher: Bruce Schneier’s strong cryptography based on a deck of playing cards exercise solution codepad 202 14 Jan 2011 Slots: Simulate a slot machine exercise solution codepad 201 11 Jan 2011 Two Integrals: The exponential and logarithmic integral, and an approximation for prime-pi exercise solution codepad 200 07 Jan 2011 Counting Primes: The prime counting function and nth-prime function exercise solution codepad 199 04 Jan 2011 Dijkstra’s Algorithm: Find the shortest path to all vertices of a graph from a single source, guest written by Graham Enos exercise solution codepad 198 31 Dec 2010 Arithmetic Drill: Repetitious drill for children learning basic arithmetic exercise solution codepad 197 28 Dec 2010 Carmichael Numbers: Composite numbers such that an-1 ≡ 1 (mod n) if a is prime to n exercise solution codepad 196 24 Dec 2010 Tracking Santa: How far does Santa travel on his annual journey? exercise solution codepad 195 21 Dec 2010 Interval Arithmetic: An exercise from SICP exercise solution codepad 194 17 Dec 2010 Polite Numbers: Write numbers as the sum of two or more consecutive integers exercise solution codepad 193 14 Dec 2010 Longest Duplicated Substring: Use a sorted suffix list exercise solution codepad 192 10 Dec 2010 Two Random Selections: Use random number to select fortunes and lotto winners exercise solution codepad 191 07 Dec 2010 Ullman’s Puzzle: It never hurts to sort exercise solution codepad 190 03 Dec 2010 Maximum Sum Subsequence: A classic programming exercise due to Jon Bentley exercise solution codepad 189 30 Nov 2010 Form Letters: Merge a schema and a data file to write form letters exercise solution codepad 188 26 Nov 2010 Divisors And Totatives: The number-theoretic functions divisors, numdivs, sumdivs, totatives, and totient exercise solution codepad 187 23 Nov 2010 String Subsets: Determine if one string is a subset of another exercise solution codepad 186 19 Nov 2010 Topological Sort: Order the edges of a graph by their precedence relationship exercise solution codepad 185 16 Nov 2010 RSA Cryptography: The original public-key cryptographic system, still in wide use exercise solution codepad 184 12 Nov 2010 Rowland’s Prime-Generating Function: A sequence of ones and primes exercise solution codepad 183 09 Nov 2010 Subset Sums: Third level of the Greplin Programming Challenge, using dynamic programming and memoization exercise solution codepad 182 05 Nov 2010 Weather Forecast: Fetch the weather forecast from the internet exercise solution codepad 181 02 Nov 2010 Emirps: Prime numbers that are prime when their digits are reversed, but not palindromic exercise solution codepad 180 29 Oct 2010 Fibonacci Primes: Find primes among the fibonacci numbers; includes the Park-Miller random number generator and Miller-Rabin primality checker exercise solution codepad 179 26 Oct 2010 Benford’s Law: A useful mathematical oddity, and an example of text file databases exercise solution codepad 178 22 Oct 2010 Text File Databases: Part 2: Various functions to process records with fields exercise solution codepad 177 19 Oct 2010 Text File Databases: Part 1: Functions to read records with fields in various formats exercise solution codepad 176 15 Oct 2010 Find The Longest Palindrome In A String: A beautiful linear-time algorithm due to Johan Jeuring exercise solution codepad 175 12 Oct 2010 Rotate An Array: A simple but tricky exercise solved by an algorithm from the folklore of computing exercise solution codepad 174 08 Oct 2010 Zeller’s Congruence: Calculate the day of the week for a given date exercise solution codepad 173 05 Oct 2010 George Marsaglia’s Random Number Generators: Nine high-quality RNGs in nineteen lines of code exercise solution codepad 172 01 Oct 2010 Oban Numbers: Numbers that omit the letter “o” when spelled, and a function to convert numbers to words exercise solution codepad 171 28 Sep 2010 Maxiphobic Heaps: A priority-queue data structure, similar to leftist heaps, due to Chris Okasaki exercise solution codepad 170 24 Sep 2010 Alien Numbers: An exercise from Google Code Jam exercise solution codepad 169 21 Sep 2010 Kaprekar Numbers: Square the number and add the digits in halves exercise solution codepad 168 17 Sep 2010 The Factorization Of F7: Part 2: Our fortieth anniversary celebration of Morrison and Brillhart’s method of integer factorization by continued fractions exercise solution codepad 167 14 Sep 2010 The Factorization Of F7: Part 1: Our fortieth anniversary celebration of Morrison and Brillhart’s method of integer factorization by continued fractions exercise solution codepad 166 10 Sep 2010 Data Encryption Standard: Part 4: DES driver program exercise solution codepad 165 07 Sep 2010 Data Encryption Standard: Part 3: Triple DES and cryptographic hashing 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 163 31 Aug 2010 Data Encryption Standard: Part 1: Basic block enciphering and deciphering using DES exercise solution codepad 162 27 Aug 2010 Chinese Remainders: An ancient application of modular inverses 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 160 20 Aug 2010 Marriage Sort: A sub-quadratic sort similar to shell sort or comb sort exercise solution codepad 159 17 Aug 2010 Cut: Select fields or characters from input lines exercise solution codepad 158 13 Aug 2010 E: A simple simulation with a surprising ending exercise solution codepad 157 10 Aug 2010 Literate Programming: Structured documentation in the style of Donald Knuth exercise solution codepad 156 06 Aug 2010 Two Powering Predicates: Determine if a number is a square or a prime power exercise solution codepad 155 03 Aug 2010 Carl Hewitt’s Same-Fringe Problem: Do two trees have the same leaves, solved with streams (lazy lists) exercise solution codepad 154 30 Jul 2010 Fibonacci Numbers: Three algorithms taking exponential time, linear time, and logarithmic time exercise solution codepad 153 27 Jul 2010 HAMURABI.BAS: Manage grain and land in ancient Sumeria exercise solution codepad 152 23 Jul 2010 Happy Numbers: Iterating the sum of the squares of the digits terminates with one exercise solution codepad 151 20 Jul 2010 Solving Systems Of Linear Equations: Matrix operations LU-decomposition and LUP-decomposition exercise solution codepad 150 16 Jul 2010 Contents: Themes: Blog Management exercise solution codepad 149 13 Jul 2010 Word Cube: A game to form words from a given set of letters exercise solution codepad 148 09 Jul 2010 Contents: Permuted Table Of Contents: Blog management exercise solution codepad 147 06 Jul 2010 Chaocipher: First look at a ninety-two year old autokey-type cipher exercise solution codepad 146 02 Jul 2010 Contents: Chronological Listing Of Exercises: Blog management exercise solution codepad 145 29 Jun 2010 World Cup Prognostication: Simulate the knockout stage using elo ratings exercise solution codepad 144 25 Jun 2010 Learn A New Language: Solve the exercise of your choice in an unfamiliar language exercise solution codepad 143 22 Jun 2010 Matrix Operations: Matrix addition, scalar multiplication, multiplication and transposition exercise solution codepad 142 18 Jun 2010 Parsing Command-Line Arguments: An old-style getopt function exercise solution codepad 141 15 Jun 2010 Natural Join: The fundamental relational database operator exercise solution codepad 140 11 Jun 2010 N-Queens: Our version of a classic algorithmic exercise exercise solution codepad 139 08 Jun 2010 Diff: Find the differences between two text files 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 137 01 Jun 2010 Unwrapping A Spiral: An exercise in recursion exercise solution codepad 136 28 May 2010 Printing Files: A simple program to list files, similar to the unix pr program 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 134 07 May 2010 Integer Logarithms: An improved algorithm is O(log n) instead of O(n) exercise solution codepad 133 04 May 2010 Spectacular Seven: Compute the odds at jai alai 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 131 27 Apr 2010 Modern Elliptic Curve Factorization, Part 2: Elliptic arithmetic using Montgomery’s parameterization exercise solution codepad 130 23 Apr 2010 Modern Elliptic Curve Factorization, Part 1: Elliptic arithmetic using Montgomery’s parameterization 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 128 16 Apr 2010 Expression Evaluation: Parse and evaluate an arithmetic expression with plus, minus, times, divide and parentheses 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 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 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 124 02 Apr 2010 Disjoint Sets: A data structure for storing sets of items in disjoint partitions exercise solution codepad 123 30 Mar 2010 Passover: Calculate the dates of the Jewish holidays Rosh Hashanah and Passover exercise solution codepad 122 26 Mar 2010 The Next Prime: Efficiently find the next prime number larger than a given number exercise solution codepad 121 23 Mar 2010 Texas Hold ‘Em: Find the best poker hand 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 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 118 12 Mar 2010 Traveling Salesman: Brute Force: Examine all possible permutations to find the least-cost tour exercise solution codepad 117 09 Mar 2010 Lexicographic Permutations: Continually generate the next permutation using an algorithm by Dijkstra exercise solution codepad 116 05 Mar 2010 Binary Search Tree: Classic data structure, providing insert, delete and lookup for ordered datatypes 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 114 26 Feb 2010 Run Length Encoding: A simple compression method for text files exercise solution codepad 113 23 Feb 2010 Engineering A Sort Function: A high-performance quicksort by Jon Bentley and Doug McIlroy exercise solution codepad 112 19 Feb 2010 Sieve Of Atkin, Improved: A faster version of the Sieve of Atkin 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 110 12 Feb 2010 Sieve of Atkin: A modern alternative to the Sieve of Eratosthenes for computing prime numbers exercise solution codepad 109 09 Feb 2010 Numerical Integration: Quadrature by the rectangular, trapezoidal and Simpson’s method, including adaptive quadrature exercise solution codepad 108 05 Feb 2010 Segmented Sieve Of Eratosthenes: Extend the Sieve of Eratosthenes to large ranges of integers exercise solution codepad 107 02 Feb 2010 Proving Primality: A deterministic, not probabilistic, method of checking primality 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 105 26 Jan 2010 Primality Checking, Revisited: The Baillie-Wagstaff algorithm for primality checking exercise solution codepad 104 22 Jan 2010 Phases Of The Moon: Calculate the number of days since the last new moon exercise solution codepad 103 19 Jan 2010 Flight Planning: Computing the navigation triangle, by Jos Koot exercise solution codepad 102 15 Jan 2010 Three Binary Algorithms: Multiplication, division and greatest common divisor using binary arithmetic 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 100 08 Jan 2010 Nim: A two-player game of mathematical logic exercise solution codepad 99 05 Jan 2010 The Sum Of Two Squares: A math puzzle with a solution by Dijkstra exercise solution codepad 98 01 Jan 2010 Cal: Print a twelve-month calendar exercise solution codepad 97 29 Dec 2009 A Statisticle Speling Korrecter: Peter Norvig’s version of the Google spelling suggester exercise solution codepad 96 22 Dec 2009 Permuted Index: David Parnas’ classic deconstruction of the keyword-in-context index 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 94 15 Dec 2009 Affine-Shift Cipher: A cryptographically weak but mathematically interesting cipher exercise solution codepad 93 11 Dec 2009 Selection: Find the kth-largest item in a list exercise solution codepad 92 08 Dec 2009 Word Count: An implementation of the unix `wc` program exercise solution codepad 91 04 Dec 2009 Autokey: A cipher in which the input text forms part of the key exercise solution codepad 90 01 Dec 2009 Wolves And Rabbits: Analyze population dynamics using the Lotka-Volterra equations 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 88 24 Nov 2009 Sunrise, Sunset: Calculate the times of sunrise and sunset on any day anywhere in the world exercise solution codepad 87 20 Nov 2009 Master Mind, Part 2: Solve a Master Mind puzzle in five probes or less exercise solution codepad 86 17 Nov 2009 Master Mind, Part 1: Referee a two-player game of deductive logic exercise solution codepad 85 13 Nov 2009 Two linear sorts: Count sort and radix sort exploit the structure of integer keys exercise solution codepad 84 10 Nov 2009 Merge Sort: A fast, stable sorting algorithm, especially well-suited to linked lists exercise solution codepad 83 06 Nov 2009 Heap Sort: A guaranteed O(log n) sorting method based on priority queues exercise solution codepad 82 03 Nov 2009 Quick Sort: Tony Hoare’s divide-and-conquer sorting algorithm exercise solution codepad 81 30 Oct 2009 Two Sub-Quadratic Sorts: Comb sort and shell sort exercise solution codepad 80 27 Oct 2009 Three Quadratic Sorts: Bubble sort, selection sort and insertion sort exercise solution codepad 79 23 Oct 2009 Mr. S. and Mr. P.: A logic puzzle popularized by John McCarthy exercise solution codepad 78 20 Oct 2009 Shuffle: Create random permutations of an array or linked list 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 76 13 Oct 2009 Bifid: A simple but effective fractionating cipher, never used militarily 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 74 06 Oct 2009 MapReduce: Google’s famous system for parallelizing computations expressed as a programming idiom exercise solution codepad 73 02 Oct 2009 Red-Black Trees: A purely functional dictionary data structure based on approximately-balanced trees exercise solution codepad 72 29 Sep 2009 Green Eyes: A counting problem from high-school math exercise solution codepad 71 25 Sep 2009 Grep: Simple version of the classic unix regular-expression matching utility exercise solution codepad 70 22 Sep 2009 Regular Expressions, Part 3: A regular expression test suite exercise solution codepad 69 18 Sep 2009 Regular Expressions, Part 2: The corresponding matcher exercise solution codepad 68 15 Sep 2009 Regular Expressions, Part 1: A parser for regular expressions exercise solution codepad 67 11 Sep 2009 Beautiful Code: A simple regular-expression matcher by Rob Pike exercise solution codepad 66 08 Sep 2009 Porter Stemming: Martin Porter’s algorithm for removing suffices from word stems 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 64 01 Sep 2009 String Search: Rabin-Karp: Our final classic string-search 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 62 25 Aug 2009 String Search: Knuth-Morris-Pratt: Search for a pattern in a text using an O(n) algorithm exercise solution codepad 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 60 18 Aug 2009 Blum Blum Shub: Stream cipher based on a cryptographically secure pseudo-random number generator exercise solution codepad 59 14 Aug 2009 Pairing Heaps: A standard algorithm for maintaining priority queues exercise solution codepad 58 11 Aug 2009 Uncle Bob’s Bowling Game Kata: Use pattern-matching on lists to solve a classic object-oriented programming exercise exercise solution codepad 57 07 Aug 2009 ADFGX: A classic German military field cipher from the First World War exercise solution codepad 56 04 Aug 2009 Lenstra’s Algorithm: Hendrik Lenstra’s original algorithm for elliptic curve factorization exercise solution codepad 55 31 Jul 2009 Elliptic Curve Factorization: A very simple implementation of elliptic curve factorization exercise solution codepad 54 28 Jul 2009 Elliptic Curves: Library of basic functions on elliptic curves exercise solution codepad 53 24 Jul 2009 Let’s Make A Deal!: Simulate a tricky probability calculation exercise solution codepad 52 21 Jul 2009 Pollard’s P−1 Factorization Algorithm: A simple factorization algorithm by John Pollard exercise solution codepad 51 17 Jul 2009 International Mathematical Olympiad: Three exercises from 1960s math competitions exercise solution codepad 50 14 Jul 2009 The Daily Cryptogram: Solve a monoalphabetic substitution cipher exercise solution codepad 49 10 Jul 2009 The Golden Ratio: Evaluate a continued fraction, based on my daughter’s math homework 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 47 03 Jul 2009 The Playfair Cipher: A classic military field cipher exercise solution codepad 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 45 26 Jun 2009 Treaps: A randomized dictionary data structure, provides in-order access to key exercise solution codepad 44 23 Jun 2009 The Mod Out System: Expand a series of ranges exercise solution codepad 43 19 Jun 2009 Monte Carlo Factorization: Integer factorization via Pollard’s rho algorithm 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 41 12 Jun 2009 Feynman’s Puzzle: A simple logic puzzle exercise solution codepad 40 09 Jun 2009 Longest Common Subsequence: A classic programming algorithm, with a solution that dates to folklore exercise solution codepad 39 05 Jun 2009 Ternary Search Tries: Build a function library for handling ternary search tries exercise solution codepad 38 02 Jun 2009 Pig Latin: A simple exercise to solve a children’s game exercise solution codepad 37 29 May 2009 Double Transposition Cipher: A simple and effective cipher, easy to perform by hand exercise solution codepad 36 26 May 2009 Word Search Solver: A computerized implementation of a popular time-waster exercise solution codepad 35 22 May 2009 The Next Palindrome: Find the next palindromic number greater than the input number exercise solution codepad 34 19 May 2009 Fermat’s Method: Integer factorization by Fermat’s algorithm 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 32 12 May 2009 Loan Amortization: Calculate and print a simple loan amortization table exercise solution codepad 31 08 May 2009 Wheel Factorization: Find the factors of a number by a variant of trial division exercise solution codepad 30 05 May 2009 Priority Queues: A simple library implementation of the priority queue data structure exercise solution codepad 29 01 May 2009 Primality Checking: A probabilistic primality checker by Gary Miller and Michael Rabin exercise solution codepad 28 28 Apr 2009 Morse Code: Translating the dots-and-dashes of Samuel Finley Breese Morse’s telegraph code 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 26 21 Apr 2009 Probabilistic Spell Checking: A probabilistic spell-checker based on a Bloom filter exercise solution codepad 25 17 Apr 2009 Spell Checking: A spell-checker in a trie-based dictionary exercise solution codepad 24 14 Apr 2009 Google Treasure Hunt 2008 Puzzle 4: A prime-number puzzle exercise solution codepad 23 10 Apr 2009 Anagrams: Find anagrams in a dictionary exercise solution codepad 22 07 Apr 2009 Flipping Pancakes: A sorting method analyzed by Bill Gates exercise solution codepad 21 03 Apr 2009 Programming the Turing Machine: A turing-machine program to multiply two numbers exercise solution codepad 20 31 Mar 2009 Rail-Fence Cipher: A simple transposition cipher exercise solution codepad 19 27 Mar 2009 A Turing Machine Simulator: An interpreter for a single-tape, multi-symbol turing machine exercise solution codepad 18 23 Mar 2009 Binary Search: A simple task, easy to get wrong exercise solution codepad 17 20 Mar 2009 Dodgson's Doublets: A word game invented by the author of Alice in Wonderland exercise solution codepad 16 17 Mar 2009 Comma-Separated Values: Retrieve records from a comma-separated values file using a finite-state machine exercise solution codepad 15 13 Mar 2009 Friday, the Thirteenth: A small calendar library, and a simple use of it exercise solution codepad 14 10 Mar 2009 Word Frequencies: Our interpretation of a problem solved by a classic unix pipeline exercise solution codepad 13 06 Mar 2009 Roman Numerals: A library to read and write Roman numerals exercise solution codepad 12 03 Mar 2009 Creation: Cryptanalysis of a Vigenère cipher exercise solution codepad 11 27 Feb 2009 Mark V. Shaney: Generate parodies of a text using a Markov chain exercise solution codepad 10 24 Feb 2009 Mardi Gras: Compute the date of Easter exercise solution codepad 9 20 Feb 2009 A Self-Reproducing Program: The quintessential quine exercise solution codepad 8 20 Feb 2009 The Digits of Pi: A spigot algorithm to calculate the digits of pi exercise solution codepad 7 20 Feb 2009 Multiple Dwellings: A simple logic puzzle, solved with the `amb` non-deterministic operator exercise solution codepad 6 20 Feb 2009 ROT13: A simple Caesar-shift cipher exercise solution codepad 5 19 Feb 2009 Flavius Josephus: Programming a cyclical list exercise solution codepad 4 19 Feb 2009 Sudoku: A backtracking solution to everybody’s favorite puzzle exercise solution codepad 3 19 Feb 2009 Bingo: Calculate the probability of winning at Bingo exercise solution codepad 2 19 Feb 2009 Sieve of Eratosthenes: A Scheme implementation of an ancient algorithm exercise solution codepad 1 19 Feb 2009 RPN Calculator: Evaluate numeric expressions at the command line exercise solution codepad