As of October, 2016, Embarcadero is offering a free release
of Delphi (Delphi
10.1 Berlin Starter Edition ). There
are a few restrictions, but it is a welcome step toward making
more programmers aware of the joys of Delphi. They do say
"Offer may be withdrawn at any time", so don't delay if you want
to check it out. Please use the
link to let me know if the link stops working.
Support DFF - Shop
If you shop at Amazon anyway, consider using
this link. We receive a few cents from each purchase.
Support DFF - Donate
If you benefit from the website, in terms of
knowledge, entertainment value, or something otherwise useful,
consider making a donation via PayPal to help defray the
costs. (No PayPal account necessary to donate via credit
card.) Transaction is secure.
e-mail with your comments about this program (or anything else).
From the October 17, 2011 page of my
2011 Mensa 365 Brain Puzzlers Calendar
Form six 9-letter words by combining two 3-letter blocks found below with
endings already placed in the grid. All blocks will be used. If you do it
correctly, one of the vertical columns will spell a bonus word.
Use these groups to complete the words in the grid: AFT, ARC, BET, DEM, ERG,
HEN, KEB, ROT, SCO, SNA, UND, YST
Background & Techniques
This is one of a number of puzzles in the Delphi Techniques section of DFF
rather than in the Projects section. It is not always clear which
programs should qualify, but I decided to to locate this one here because it has
two behaviors that I must relearn each time I use them:
- How to determine a mouse click line number in a TMemo:
In the OnClick event exit, property SELSTART will contain
the offset of the clicked character within the TEXT property.
To convert SelStart to the line number and character within the line
Although not used in this program, the clicked position within the line
string could be found by getting the index of the beginning of the clicked
line and subtracting that number from SelStart thus:
- How to determine a mouse click location on a TStringGrid:
In the OnClick event exit, properties COL and ROW
will indicate the location of the cell clicked.
The first version of the program used our TDict dictionary unit to
identify when valid words were built and the "Search" button used a recursive
GetNextWord function to find all solutions. In the final version I
replaced the dictionary calls with a simple string list, Answers,
lookup to identify the 6 words and decided to eliminate the recursive nature of
the function so that it only returns one word per button click. This
allows the user to find words as a way to reduce the size of the search
space. Additionally, I now can identify all 6 solution words - the one
reptilian answer word was missing even from our largest dictionary until
Running/Exploring the Program
Suggestions for Further Explorations
||Additional puzzles of the same type would be
easy to manually construct and use if we just added the ability to load
other puzzles from a text file.
||By reintroducing our dictionary unit, it
should even be feasible to automatically construct additional puzzles.
|Original: October 21, 2011
February 18, 2016