Delphi For Fun Newsletter #52

March 28, 2009


Unless you were born in the U.S.  before 1940, you probably have won't remember of the Burma Shave roadside signs which presented  "ads" on 5 small roadside signs spaced 100 yards apart.  I think of those signs every year about this time because I recall one of the rhyming versions:


"Spring has sprung,

The grass has riz,

Where last year's

Careless driver is



This Wikipedia article has an interesting history of the company and many more examples (but not this one). It also says that there were 6 signs in a set, so the words "Careless" and "driver is" in my example probably appeared on separate signs.  We are seeing all the signs of spring; daffodils and crocus springing to life, the Gobbler parading his harem  across the yard most days,  checking to see if anything is up in the garden yet,   and we're working on the last  of the 5 rows of winter firewood.  


I've written a fair number of interesting projects this quarter including an animated 4-bar linkage demonstration that had been on the drawing board for several years.  Some other geometry stuff was published including  Monge's theorem about circle external tangents, a program to locate an item in space if we know its distance and direction from 4 sensors  and a  shadow position simulator.  I also wrote an RSA Public Key Exchange demo to explain and see if it could really work (it does!), plus a few other light weight items.     


Here is a summary of and links to all of the programs posted since our December newsletter.



December 12, 2008: One of the first  programs posted when I started DFF 8 years ago solved the problem of finding  the path from left to right through an array of random numbers with the smallest (or largest ) sum.  The original version used recursion, examining every possible path to find the smallest and largest.  A sharp viewer recently pointed out that a much faster algorithm existed.  Sure enough, Graph Traverse Version 2 posted today adds the new algorithm and solves problems in milliseconds instead of seconds.

December 19, 2008: 

One last update before we take off to help Santa Claus with his deliveries.   I ran across Monge's Circle Theorem the other day and decided to check out its surprising conclusion about pairs of tangents of 3 circles.    Using the trusty "divide and conquer" problem solving technique, today's posting is Version 4 of our Geometry demo program which tests some new line and circle functions leading to the one to find the Circle-Circle exterior tangents needed for Monge.  The demo includes brief descriptions of the algorithms used to construct the tangents.

1. Circle-circle intersection

2. Point-Circle Tangents (using circle-midpoint circle intersection)

3. Exterior Circle-Circle Tangents (using point-circle tangents)



December 27, 2008:  We are home from spending Christmas with our daughter and a few of the grandchildren.   Besides being humiliated by a 4 year old in a "Pacman" competition, I have a grand assortment of new reading material which should last for the next several months.   

I finished up and posted Monge's Circle Theorem demo program this morning illustrating that, given 3 circles,  the three pairs of external circle to circle tangents do indeed intersect on the same straight line! 



January 5, 2009:  Holidays are over for now, time to get back on the diet and to get back to work, physical and mental.  For the mental part, today's Four-Bar Linkage program is the first version of a mechanical linkage simulation that seems worthy of posting.   A search of DFF for "linkages" produced only one hit before today.  In an August 2002 Newsletter I wrote "I've been working on a mechanical linkages simulator program this week, but it's going to take at least another week to get anything even close to working."   Guess I underestimated the complexity of that task!.  It has taken 60+ hours to get today's posting which only scratches the surface of the "mechanical linkage simulation" topic.   I'll  be working on simpler projects for awhile to let my brain recover from the strain.    

January 13, 2009:  Think you could mentally flip a coin 100 times and fool a statistics professor into believing that you had recorded actual flip results?  Probably not.  But if you feel the need to try, play with this Coin Flip Run Lengths program first!  

 January 19, 2009:  GPS receivers have chips that perform some pretty sophisticated math to convert satellite messages into the current receiver coordinates.   Today's Point from 4 Sensors program scratches the surface of the problem. 


January 25, 2009:  One more math posting for this month, a demo of the multivariate Newton-Raphson method for solving systems of  non-linear equations.   It only implements quadratic equations with up to 4 variables, but if you want to calculate the square root of 99 to 12 decimal places, or, as in the example at right,  find the intersection points of a couple of conic sections, or find the intersection points for three spheres, this may be just the ticket.

February 3, 2009:  I am supposed to be boning up on Delphi for Net concepts, but so far I'm finding lots of frustrations.  I just want to read and search a stupid flat file with a server side program to solve the Booksearch problem,  but I have to learn SQL to do that?  Ugh!  I'm finding that too much ADO about not much is a pain in the ASP!

So I decided to write a program  from Saturday's Mensa Puzzle-A-Day calendar.  Chess Logic Puzzle was a satisfying diversion for a few days.  Given a 4x4 board with 6 of the 12 uniquely identifiable chess pieces fixed in place,  add the other 6 while meeting a few constraints.   Actually not that difficult, but a good programming exercise to automate and animate the solution. 

February 10, 2009:  One of the last  two updates seems to have broken some of the features of our List Large Files utility program which scans a specified drive and displays information about the largest files found..  The  file name data was extracted incorrectly when clicking open its folder, and when formatting to create the CSV (Comma Separated Values) file.   In any event, Version 3.1 posted today seems to have fixed those problems, hopefully without introducing any new ones. 

February 12, 2009: Brute Force uses exhaustive search to solve a large variety of puzzles involving integer arithmetic.   I started out merely to add the problem from today's Mensa Page-A-Day Puzzle Calendar, which asks you to use the digits 1-9 to complete this form when the equations are evaluated left to right and top to bottom.  However, I decided to add support to the program for JPEG files in problem displays when the BMP image file turned out to be 150 Kbytes.  The high quality JPEG image displayed here (and in the program) is 24 Kbytes , a significant savings.    Brute Force Version 2.2 includes this puzzle and a dozen or so other sample puzzles.  


February 13, 2009:  Here's a little  program to find a schedule of dates meeting specific month-of-year, day-of-month, or day-of-week  conditions within a given range of years, especially today, Friday the 13th !  

February 22, 2009:  Some programs, even after they fade away,  keep resurfacing.  Knight's Tour, a program that  investigates a chess Knight visiting every square on a chessboard exactly once, is one of those.  Knight's Tour Version 4, adds the ability to define non-square boards for the tours.  The algorithm used by the program to solve these boards does not seem to work as well as on square boards though; the 4X7 board image at right was solved only after 110,000 moves were tried.  On a 10x4 board, no solution was found after a million trial moves.  You're welcome to download the program and try your hand at solving it manually though! 

March 1, 2009:  A viewer wanted to see where his shadow would be if he knew where the sun was.  Assuming that he meant mathematically rather than have me visit and point to it, I wrote this Sun Shadow Simulator program to produce a "3D" display of a vertical rod from given sun and eye positions.  The program can also plot a set of shadow points created when a button is clicked or loaded from a file of sun positions.  This could plot, for example, a shadow's path from sunrise to sunset on a day or an analemma, the figure 8 figure formed by plotting  the shadow  at the same time of day for a year. 




March 12, 2009:   This week's program was delayed a few days by birthday celebrations (70 for me and 5 for the other end of the family spectrum, grandson Nathan).    I think his two best presents were "Wally", (the trash collecting robot) from his folks, and my gift of total control of the TV remote for the day.  In case you do not know this, there are too many hours of Sponge Bob Square Pants on TV every day!    I received enough books to last me through Christmas, and the "36 Cube" puzzle billed as the "world's most challenging".  I'll let you know after I get the program simulation of the puzzle written.  

RSA Public Key Exchange demo program was posted today, after a buddy ask me for the details of who does what to who when Alice and Bob exchange secure messages.   I had thought I understood it when I read Sarah Flannery's book "In Code" last year, but I had to go back for a refresher.   Perhaps this programming exercise will help it stick this time.  

 March 19, 2009:  The Perfect Bookmark.  My third best invention ever!  (Even though my wife almost fell out of  her chair from laughing so hard when I tried to explain how brilliant the idea was.)  Check it out for yourself.

Too lazy to look up new quotes this time:   Here are two of my favorites about effort and attitude quoted from memory:


"I have failed many times in my career, that is why I succeeded:"  Michael Jordan (Basketball player)


"Whether you think you can or think you can't, you're probably right":  Henry Ford (Auto magnate)



To subscribe or unsubscribe from this newsletter, visit


275,000 home page visitors since Sept 2000.      360,000 program downloads in the past 12 months!