|
I am writing a Scrabble AI, and I want to handle blank tiles. Right now, I want to expand a string containing blank tiles into a list of strings composed of words created by all possible interpretations of the blanks. So, "H_LLO" ==> ["HALLO", "HBLLO", ... "HZLLO"] (length is 26) However, Scrabble has 2 blank tiles, so I can't just do a simple for loop and replace. For example, "H_LL_" ==> ["HALLA", "HALLB", ... "HBLLA", ... "HZLLZ"] (length is 26x26 = 676) What is the cleanest way to do this? The best I could come up with is the following, but I don't much like it: import re
from itertools import product
w = "H_LL_"
expanded = []
product_args = list()
for _ in xrange(w.count("_")):
product_args.append( map(chr, range(65, 91)) )
for repl_str in product(*tuple(product_args)):
wtemp = w
for c in repl_str:
wtemp = re.sub('_', c, wtemp)
expanded.append(wtemp)
|