[Home] [Puzzles & Projects] [Delphi Techniques] [Math topics] [Library] [Utilities]
|
|
|
![]() | If the 'SaveAs' option was used to save the dictionary as a text file, capitalization information was lost. Capitalized words are now saved as capitalized and the characters ",C" are appended to match the ",A" and ",F" used to flag abbreviations and foreign words. |
![]() | A user recent wrote about problems he was having trying to create a dictionary from a file with 350,000 French words. Dicmaint was taking a very long time to process the file. It turned out that the file was in Unix format (no Carriage returns) which made it look like a single record 3.7 million bytes in length to any windows standard program. Dicmaint used a destructive Getword routine - each word was deleted from the record in memory as it was retrieved, a very slow process for a record of that length. Getword now extracts words without modifying the record. It turns out that using the FileFix utility to correct the input file was even more significant it getting run time down to a few seconds. But I left the new Getword routine in as an improvement anyway. |
Addendum November 17, 2006: A few enhancements to Decrypt, the decryption function of Wordstuff were posted today. Users may now selectively use or omit words in the decrypted message during the search for a solution. Also specified plaintext words may be ignored and not counted as valid words in the deciphered message.
Addendum December 7, 2006: A small fix to Dicmaint was made today : When saving a text version of a dictionary, it should automatically have been saved as a text file. The test for file extension was for '.ext' instead of '.txt' so a .'.txt' dictionary would have been saved in compressed (.dic) format.
The change uncovered the fact that the dictionary unit, UDict, which has been part of our DFF Library file some some time, was also included in the source code zip files for Dicmaint and Wordstuff. As a result, naturally, the UDict included with these programs was not the latest version. As of today, UDict has been removed from the program source files and users wishing to recompile these programs will need the DFF library zip file, version DFFLibV08 or later.
Addendum July 8, 2007: A few small minor program changes were posted today. Namely:
![]() | Crossword Helper was enhanced to solved a variation of the word completion problem. My Mensa Daily Puzzle calendar has a puzzle type with a scrambled word that is missing one letter, kind of a combination of the "Crossword Helper" and "Unscramble" programs. CrosswordHelper2 now uses some of the code from the Scrambled Pie solver to find the word when there is a single letter missing but no solution is found initially. For example, the previous version would have completed "b?by" as "baby", but would have found no solution for "bby?". The new version will ask if you want to search for anagrams and return "baby" if you click the Yes button. It will also find the solution for the "ARUI?YNGR" calendar puzzle that led to the enhancement in the first place. |
![]() | Search logic used in Scrambled Pie was moved to a new unit "USearchAnagrams" which is now used by both ScrambledPie and CrosswordHelper2 to implement the enhancement described above. |
![]() | I add words to full.dic whenever it failed to contain the answer to some word puzzle I'm working on. The Dictionaries.zip download file was updated to contain the latest version of our full.dic dictionary file. |
Addendum August 10, 2007: Another small update to Crosswordhelper this month. I'm not sure when it got broken, but a viewer recently pointed that the "Excluded letters" option did not work. Crossword Helper displays a list of valid words from the current dictionary when some of the letters and their positions are known. The excluded letters list specifies letters that are not to be used in completing the word, however the code was checking upper case word letters against lower case excluded letters. Not surprisingly, it never found a match and included all letters in the resulting display. Now fixed
Addendum September 19, 2009: A recent laptop upgrade revealed some screen layout problems with some of the DFF programs, include the WordStuff modules described here. See the DPI Scaling page for more details. No significant changes otherwise.
Addendum April 25, 2010: Another minor
change today to fix a problem that has bugged me for a long time. When
entering a partial word to be analyzed in "Word Completion" or letters to be
analyzed in "Unscramble" it had been necessary to switch from keying to a mouse
click on the Search button to find solutions. Now, pressing the "Enter"
key also triggers the search. The simple code in the edit control's OnKeyPress exit looks like this (red text = comments):
begin
if ord(key)=13 then
{Enter key was pressed}
begin
key:=char(0);
{null out the key}
SolveBtnClick(sender);
{call the search button click routine}
end;
end;
October 14, 2010: A new program, Spellbound, was added to the Wordstuff whapper today. Like the others, the source is also available as a standalone program. Spellbound helps in a game of the same name posted in the games section of the AARP website (http://games.aarp.org/games/spellbound.aspx). The game's objective is to form as many words as possible from a given set of letters with a time limit on the search. My program is a "helper" which searches a chosen dictionary for embedded words and displays the results. I may add user play at a future date, but figuring out an efficient way to test all permutations of all subsets of a given set of letters was enough fun for awhile.
June 17, 2011: I recently posted a Delphi Techniques program about using Delphi's OnIdle exit to perform background processing without interfering with user actions. As a more practical example, I just posted Version 2 of our Spellbound program to allow user play (enter words which can be made from a given set of letters) while the program does its own search in the background. If you approach it as a competition, I can pretty much guarantee that the program will win - at least that's the case for me. It was a good programming exercise though to let the program search in lots of small chunks while you are thinking and still respond instantly when you type or click. Wordstuff3 was recompiled to include the new version also.
October 14, 2011: Another update today to a program included under the Wordstuff umbrella, Unscramble this time. I added an option to handle cases where, rather than being scrambled, words are "interlaced". Letters for 2 or 3 words appear in the correct order but interspersed with letters of the other words. So, for example, "CAT" and "'FROG" could appear as "CFRAOGT". A new checkbox on the Unscramble form indicates that the letters represent interlaced words. The sample set of 17 letters included on the form represent 3 synonymous words and are from a recent Mensa Puzzle Calendar page. I did not successfully identify the words using human brainpower, but the program finds them in a minute or two.
November 22, 2014: Two programs changed with today's posting"
February 1, 2015: A small fix to Unscramble (now Version 2.2), to correct range of maximum and minimum word lengths to search for in order to keep them within the range based on the length of the current scrambled word.
August 30,2015: Version 2.21 of the Word Completion program allows filtering of words by specifying whether a set of given letters may or may not be used to complete partial words.
September 13, 2015: The anagram feature of Word Completion was previously only available if no words were found when filling a single missing letter. A recent puzzle required finding anagrams even when there were words found without anagramming. Version 2.3 adds a check box to force anagram searches in either case.
October 23,2016: Two programs were updated today based on today's Mensa Calendar puzzle asking for 3 and 6 letter synonyms using all of the 9 letters in the word CARPOOLED. My Unscramble program should have been able to solve it, but did not. It turns out that one of the synonyms is PRO which our dictionary categorizes as an abbreviation. Whether it is may be debated, but Unscramble had a hard-to-find option to include abbreviations. Selecting non-standard words is now much simpler with Unscamble V2, also now do an alpha sort the 2 and 3 word lists to remove redundancies caused by word order. Bottom line is that list are now much shorter and easier to scan for relevant solutions.
In the process of researching the problem, I also corrected some text scaling problems in the DicMaint program which allows words to be categorized as Abbreviation, Capitalized, or Foreign words as well as performing other dictionary maintenance tasks.
November 16, 2016: As the result of testing Dictionary accessing under Delphi 10.1 Berlin edition, DicMaint and all seven programs in the WordStuff package have been recompiled and modified to run under Delphi 7 and under the newer XE and Berlin Delphi versions. See the Delphi 7/ Later versions Differences page.
February 10, 2018: Two minor irritants were removed today to create Version 3.2.1.
.
The Dictionaries and DicMaint downloads below duplicate the download on the WordStuff 1 page. The dictionaries were last updated on 7/3/07. If you have downloaded dictionaries once since then, there is no need to download again. If you have not previously downloaded the dictionaries, you will need to do so, before running WordStuff3. The current dictionary download also contains local additions as of November, 2014.
![]() | Dictionaries & DicMaint
|
![]() | WordStuff
| ||||||
![]() | DFF Library
| ||||||
![]() | Lazarus Code
|
![]() |
Decrypt has lots of room for study. Should the "trystring" function be built based on frequency of letters in the message, or order of occurrence when words are sorted from shortest to longest? Perhaps doubled letters should be tried first, or look for digraphs (letter pairs that occur frequently), word endings, etc. The first step would be to implement timing code so that the efficiency of various techniques could be explored. |
![]() |
The current version of Decrypt is "all or nothing", a single encrypted word not in the dictionary will result in a "No solution found" message. That's not a good thing. |
![]() |
Personally, I’m going on to develop other word games using the dictionary. Next will be WordFinder – find as many valid words as possible from a random array of letters by moving horizontally, vertically, or diagonally from letter to letter. More path searching for the auto-solve part - oh boy! |
Created: February 4, 2001 |
Modified: May 15, 2018 |
[Feedback] [Newsletters (subscribe/view)] [About me]Copyright © 2000-2018, Gary Darby All rights reserved. |