Daily Archives: January 21, 2011

The Friday Fragment

It’s Friday, and time again for the Friday Fragment: our weekly programming-related puzzle.

This Week’s Fragment

Equations are a perfect fit for programming.  A small fragment of code can help you quickly compute a result, particularly when substitution or Monte Carlo methods are required: you can save time by letting the computer do the “plugging in.”

A recent Car Talk Puzzler required simultaneous equations with some trial and error.  Let’s write code to let the computer do the time-consuming substitution work for us:

You’re given $100 and told to spend it all purchasing exactly 100 animals at the pet store, buying at least one of each animal.  Dogs cost $15.  Cats cost $1, and mice are 25 cents each.  Determine the equations and write code to solve them.

To play along, post your code as a comment or send it via email.

Last Week’s Fragment – Solution

In celebration of the NFL postseason, last week’s challenge was to complete our basic our team ranking system:

Write code to use a tournament matrix (built from win/loss records) to compute power rankings for a set of teams.

To do this, we load up the matrix from win/loss records (I used scores from ProFootball-Fans.com), square it and add it to itself (M + M2), and then add across the rows.  I offered my initial tournament matrix class to do the math and get started.

To complete this, we add methods to our TournamentMatrix class to parse the scores (parseScores) and compute the powers (computePowers).  My updated class is here as TournamentMatrix2.php.  Calling it from a web page is straightforward:

<?php
    require 'TournamentMatrix2.php';
    if (isset($_POST['submit'])) {
        doTourney($_POST['scores']);
    }

    function doTourney($scores) {
        $matrix = new TournamentMatrix2();
        $matrix->parseScores($scores);
        $matrix->computePowers();
        show_powers($matrix->getPowers());
    }
?>

The calling code is in rankings.php.  You can run my code from http://derekwilliams.us/fragments/tourney.html.  Paste in your own scores, or use my NFL regular season scores at http://derekwilliams.us/fragments/nflscores.txt.  For this NFL data, you’ll see that the top 10 power rankings are:

Rank Team Power
1 Patriots 91
2 Falcons 85
3 Jets 84
4 Ravens 79
5 Chiefs 77
6 Bears 76
7 Saints 74
8 Giants 71
9 Steelers 69
10 Eagles 69

Pretty much what you’d expect (the Packers are #13).  If only the playoffs had cooperated.