August 6, 2008
They say that time seems to go by
faster as you age because each month or year is a smaller part of your total
life experience. I'm not sure of the explanation, but it does feel like
summer is flying by. The two months in
We have had a bumper crop for blueberries this summer. I've picked enough gallons to convince me that the high prices in the markets are probably justified. I'll be pruning the bushes heavily this winter to reduce the quantity but hopefully increase berry size for next year. The blueberries are about gone, but the wild blackberries are staring to ripen. Just as good to eat, but much more painful to pick! We'll be sharing the berries with our local bear, the deer, and even the turkeys. All in all, it is good to be home again doing home things, including getting back to programming. Here are links to the projects mainly since our return home.
April 8, 2008: One week before our big trip to
I took time to update our Age Problem Solver program today to include the current Mensa Calendar puzzle and to handle a couple of wording variations of previous puzzles. I also added two buttons to help test and debug the program. One button reloads the parsing tables without restarting the program and the other to "backtest" all available problems and display a summary of results.
June 22, 2008: We're back! Home again after 60 days of
European travel. Stops included
I had a few dozen DFF emails waiting for me when we got home. I think I have answered those needing responses, so if you wrote and did not receive a reply, please write again.
One question relating to the
off program led to a small change which I tested on my Dell XPS
laptop. Monitor Off uses the Pause key to turn the monitor off or on, but
the XPS documentation did not specify what key combination is needed to
generate the pause key code. I posted
Key Scan Codes
program today as a result of the investigation. It displays key values
for pressed keys which generate a character, or key names for those which do
not. By the way, on Dell XPS laptops the Fn + Insert key combination
generates Pause. Also by the way, it looks like Monitor Off is now
working even under
July 1, 2008: A small change to our Cutting Stock program was posted this evening. When multiple stock lengths were available, the summary results grid could list the stock amount used and cost in a row that associated it with the incorrect length and cost per piece data. The problem has been corrected.
July 3, 2008: Generating a magic square of a given size is not too difficult, especially if it has an odd number of cells per side. Generating a lot of them is not so easy. A viewer wrote a while ago asking about computing the amount of water that a magic square would hold if each cell became a column with its height equal to the value of the cell. Might be an interesting problem to work on, but we need some samples for testing. Today's first attempt, PanMagic Squares, will generate 115,000 or so 5x5 squares with a special "panmagic" property. There are reported to be a few million order 5 magic squares altogether. Hmmm, someone must know how to create them all.
Oh, by the way, the commonly reported
total number of different 5x5 panmagic squares is 28,800, so I may be all
wet here. I'm sure to hear more about this.
July 12, 2008: A minor update to the DelphiForFun Library file, DFFLibV11.zip, was posted this evening. with a few changes. Some of these have been previously applied to version 10 without notice but it seemed time to catch up and document them. DFFLIBV11 contains the following changes:
· In the DFFUtils unit a new routine, IntToBinaryString, has been added to produce a display (printable) binary representation of an integer.
· UTGraphSearch unit cures a memory leak with a new "Clear" method that frees nodes when it is called.
· The UBigIntsV3 big integers has a corrected Mult procedure to multiply a big integer by a 64 bit (Int64) integer. In the old version, negative smaller Int64 integers (less than 232-1) were treated as positive.
· In the Mathslib unit the NbrFactors function (number of factors for an integer) returned an incorrect value in some cases. Long time contributor Charles Doumar found and submitted the corrected version.
I'm working on a new story problem solver which reads the text and solves "digit relationship" problems like:
"Find a five-digit number in which the first digit is double the second, the third digit is two less than the second, the fourth digit is the sum of the second and third, and the last digit is one less than the first. The sum of all the digits is 19."
The program is running for half a dozen samples, but I still need to add a few more and do some documentation. Stay tuned. I watched our 4 year old grandson continuously revising and honing his language skills all this week. If only I could get my language processing programs do the same, then we would have something special!
July 16, 2008: As a programmer, I have a standing interest in how our brains get programmed; i.e. how we learn. Any intellectual problem I can solve, I should be able to teach my "computer brain" to solve. This has usually been the case, but after 40+ years of programming, the difficulty in doing so still surprises me. Today's program Digital Position Problem Solver is the latest example. It takes text story problems with phrases describing the relationships between the digits of an integer (e.g. "the first digit is two less than the second") and figures out what integer is being described. I was testing the 11th problem before realizing that my "teaching" had overlooked something. The problem sentence was: The fourth digit is one-fourth of the fifth. Oops; "fourth" can be a position and a denominator! It is clear to us humans that the relationship being described is "Fourth = 1/4*Fifth". Problem 11 is still unsolved by the program until I figure out how I know how to solve it and then how to "retrain" the program. No wonder I love this stuff!
July 27, 2008: Today's program plays with converting Latitude/Longitude angle coordinates on a sphere to X/Y distance coordinates on a flat map, i.e. the computer screen. I used the Mercator Projection mainly because there is a good article on Wikipedia describing the math involved and because there are Mercator Projection maps available online for testing. Mercator Demo allows the user to load small maps, click on two known points to tell the program about the scaling, and then click the map to see its Lat/Long coordinates or enter known location Lat/Long coordinates to see the point on the map.
July 31, 2008:
The standard set of 28 dominoes from
blank/blank through 6/6 have been placed randomly on an 8x7 grid and
their outlines erased. The puzzler's task is to replace the outlines,
i.e. to redraw the 28 dominoes. . Check it out at
August 3, 2008: Intersecting Lines is a program designed to test a LinesIntersect function designed to return a "true" or "false" condition based on whether two given line cross each other. Changes were posted today to correct a rare error condition where non-intersecting lines were reported as intersecting. Library file DFFLibV11 which contains the UGeometry unit which contains the LinesIntersect function was also reposted. Another example where my 4 year old grandson can beat my complex algebra based program in deciding whether two lines touch or cross each other! How do we do it?
Age is an issue of
mind over matter. If you don't mind, it doesn't matter. ~Mark Twain
To subscribe or unsubscribe from this newsletter, visit http://delphiforfun.org/newsletter.htm
244,500 home page visitors since Sept 2000. 401,000 program downloads in the past 12 months!