[Home] [Puzzles & Projects] [Delphi Techniques] [Math topics] [Library] [Utilities]
|
|
Problem DescriptionThere 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 & TechniquesThe 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
Suggestions for Further Explorations
|
[Feedback] [Newsletters (subscribe/view)] [About me]Copyright © 2000-2018, Gary Darby All rights reserved. |