Sunday, November 4, 2012

The Fun Part


Been a while, but unfortunately  building Wordament playing robots is not my full time job... unlike some people...

So, the goal now is the match as many 3+ letter words as possible in a 2 minute window.  Of course, the more letters the word has, the better the chance that you'll get some good points out of it - similar to Scrabble.  Obviously 2 levels of touches won't get us many words, but as we progress, the combinations get exponentially greater.   Level 2 - 84 touches, Level 3 - 408 touches, 4 letter words - 1,764.  Even Excel, backed by an i5 has a hard time now matching up 6,714 rows against a 5 letter dictionary base of almost 9,000 5 letter words.  That is a lot of number crunching!

Using my master 'possible touches' map I came up with a simple (to start with) formula in excel to try to find the next title in the series:

=IFERROR(IF(VLOOKUP($N3,$B$4:$J$19,O$1,FALSE)=0,"",IF(VLOOKUP($N3,$B$4:$J$19,O$1,FALSE)=$M3,"",VLOOKUP($N3,$B$4:$J$19,O$1,FALSE))),"")

Let me break that down a bit.

In this case cell 'N3' would be the last title that I was sitting on and the array 'B4:J19' would be the possible touches map.  Now, lookup the last title I was on to get the next possible value.  'O1' would be a dynamic indicator of which column of the possible touches array that I was trying to lookup on.  In this case, directly East which would be title number 3, however, this is checking for a zero, in which case, it returns a blank.  The next vlookup checks to see if a title has already been used, if so, returns a blank, then the final vlookup actually returns tile 3.

This is the basis for determining all the potential values - once you have a completed set for a number of letters, those become the paths to the next letter, in which the formula above is applied adding and extra check to make sure that you don't pull in tiles that have already been used.

Possible 7 letter words:

=IF(VLOOKUP($V3,$F$4:$N$19,Y$1,FALSE)=0,"",IF(VLOOKUP($V3,$F$4:$N$19,Y$1,FALSE)=$Q3,"",IF(VLOOKUP($V3,$F$4:$N$19,Y$1,FALSE)=$R3,"",IF(VLOOKUP($V3,$F$4:$N$19,Y$1,FALSE)=$S3,"",IF(VLOOKUP($V3,$F$4:$N$19,Y$1,FALSE)=$T3,"",IF(VLOOKUP($V3,$F$4:$N$19,Y$1,FALSE)=$U3,"",VLOOKUP($V3,$F$4:$N$19,Y$1,FALSE)))))))

Looks like a mess when it is pasted down here, but the only difference is the check to make sure nothing is being used twice.

Once I have all those values, I concatenate the results and boom - I have my pathways.

On to dictionary matching techniques!  Then GCode production similar to those AMAZING CNC milling machines and 3D printers!  Stay tuned!!

No comments:

Post a Comment