Cast A Word

[Home]   [Puzzles & Projects]    [Delphi Techniques]   [Math topics]   [Library]   [Utilities]




Search WWW


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 feedback 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.  Thanks


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.

Mensa Daily Puzzlers

For over 15 years Mensa Page-A-Day calendars have provided several puzzles a year for my programming pleasure.  Coding "solvers" is most fun, but many programs also allow user solving, convenient for "fill in the blanks" type.  Below are Amazon  links to the two most recent years.

Mensa 365 Puzzlers  Calendar 2017

Mensa 365 Puzzlers Calendar 2018

(Hint: If you can wait, current year calendars are usually on sale in January.)


Feedback:  Send an e-mail with your comments about this program (or anything else).

Search only




Problem Description

There are 4 dice, and there are different letters of the alphabet on each of the 6 faces of each of them (each letter appears only once).  Random throws of the dice produced the words in this list.  Can you figure out which letters appear on each of the 4 dice?  Words are: BITE, BREW, CLAY, FLEW, HELM, JUMP, JURY, MUTE, NIGH, POST, QUIZ, RAGE, TILE, TREK, TROD,  and ZERO.

Background & Techniques

 The puzzle is from the "Mind Stretchers" book published by "BRAIN GAMES To Go".  I spent spent most of this month (October 2017) looking for a solution without success.  Either it is a difficult problem or I haven't for the correct data model yet. 

So, this is the first and only unsolved puzzled posted here on DFF.  Like a bulldog, I won't let go until it is solved.  Since the book is aimed at pencil/paper solvers, I'm currently back to working on it without the computer, hoping to discover the path to a solution and use that as a guide to programmatic solving. 

Viewers who crack it are invited to use the Feedback link share how they did it.

October 31, 2017: In desperation I found the solution manually today!   Without spoling it completely, the key is recognizing that each word defines one face on each of the 4 dice.  Any word that has letters placing those of a placed word also identifies the target die for those letters.  Start listing all letter pairs that share two or more letters.  It happens that one pair of words shares three letters which automatically gives us two complete sets of faces.  Only 4 faces per die to go!   Word pairs sharing 2 letters and with one placed and one unplaced, allow us to add one more set of faces.  The two that match are placed for sure.  The two letters define a faces on the other two dice in order A,B or B.A.  If  trial placement A,B causes two letters from any word to appear on the same die, that position is invalid and the order must be B,A.  I'm quite sure that this approach will place all  

In the original "no solution found" posting, I had solicited help from viewers and, on December 1st, help arrived from Italy via Sergio, another sharp old timer Delphi programmer who writes code "just for fun". His program completed the solution by going one step beyond the "forbidden on same die" letters list and making an "OK on same die" letters list (i.e. the letters not on the forbidden list for that letter).   See "rogrammers Notes" below for more info on the algorithm.  This program is basically Sergio's work with my housekeeping applied. I'm still impressed and thankful that he did it because after month's of effort, my search for a solution was becoming not so fun.

 Non-programmers are welcome to read on, but may want to jump to bottom of this page to download the executable program now.

Programmer's Notes:

In words, the objective is to divide the 24 used letters into 4 groups (die) of 6 letters (faces) each in a way that places the the 4 letters of each given word in a different group ( a different die).  The first word added cannot conflict with any previously assigned letters.  Thereafter, each word's letters must be assigned  in such a way that the letter and any previously assigned letter for that die do not occur in any of the 20 words.   It seems likely that recursion must be used to back out of any word assigned to dice when the next next add attempt fails.  There will be 24 trial permutations of the letters to try for each before returning "false" to cause recursion back to the next previous word. 

October 31 extension - using the "words with shared letter pairs" approach should eliminate the need for recursion.  That's the algorithm I'll be working on in November.  

December 13 wrap-up - From Sergio's "OK" list, Step 1 of the solving process uses any chosen word to establish one letter for each die. Step 2 generates all combinations of 5 letters from the OK list for that die. One of those combos from each is guaranteed to be the solution. Step 3 prunes the combos lists by again going back to the Forbidden list for each letter in the combination and dropping those that have a conflict with any letter in that combo. Finally, (Step 4), one last pass finds the 6-letter combo from each die's cleaned list which together contain all 24 letters. Q.E.D. (= High-class initialism for Latin words which mean "which is what we set out to prove".)

Running/Exploring the Program 

bulletDownload  executable
bulletDownload source

Suggestions for Further Explorations

Original:  October 25, 2017

Modified:  May 15, 2018

  [Feedback]   [Newsletters (subscribe/view)] [About me]
Copyright 2000-2018, Gary Darby    All rights reserved.