20 lines
761 B
Plaintext
20 lines
761 B
Plaintext
var blocks=T("BO", "XK", "DQ", "CP", "NA", "GT", "RE", "TG", "QD", "FS",
|
|
"JW", "HU", "VI", "AN", "OB", "ER", "FS", "LY", "PC", "ZM", );
|
|
|
|
fcn can_make_word(word){
|
|
fcn(blks,word){
|
|
if (not word) return(True); // bottom of recursion
|
|
foreach b in (blks){ n:=__bWalker.idx;
|
|
if(not b.holds(word[0])) continue; // letter not on this block
|
|
blks.del(n); // remove this block from pile
|
|
if (self.fcn(blks,word[1,*])) return(True); // try remaining blocks
|
|
blks.insert(n,b); // put block back in pile: backtracking
|
|
}
|
|
False; // out of blocks but not out of word
|
|
}(blocks.copy(),word.toUpper())
|
|
}
|
|
|
|
foreach word in (T("","A","BarK","BOOK","TREAT","COMMON","SQUAD","Confuse","abba")){
|
|
can_make_word(word).println(": ",word);
|
|
}
|