プログラミングのお題スレ Part3
■ このスレッドは過去ログ倉庫に格納されています
0137デフォルトの名無しさん
2014/02/11(火) 10:38:18.77def f129(table, words, SP = "*"):
result = dict((word, []) for word in words)
h, w = len(table), max(len(x) for x in table)
table = [x.ljust(w) for x in table]
def f129s(table, down=0, right=1):
if down:
if right < 0: table = [SP*i + table[i] + SP*(w-1-i) for i in range(w)]
elif right > 0: table = [SP*(w-1-i) + table[i] + SP*i for i in range(w)]
table = ["".join(table[i][j] for i in range(len(table))) for j in range(len(table[0]))]
for word in words:
rev_word = "".join(reversed(word))
for i in range(len(table)):
for (wd, inv, ofs) in [(word, 1, 0), (rev_word, -1, len(rev_word)-1)]:
if wd in table[i]:
row, col = i, table[i].find(wd) - inv*ofs
if down:
row += col*right
if right > 0: row -= w-1
row, col = col, row
result[word].append(((row+1, col+1), (row+inv*down*len(wd), col+inv*right*len(wd)),(inv*down, inv*right)))
for (down, right) in ((0,1), (1,0), (1,1), (1,-1)):
f129s(table, down, right)
for k in words:
print k, result[k]
table = ['WVERTICALL', 'ROOAFFLSAB', 'ACRILIATOA', 'NDODKONWDC', 'DRKESOODDK', 'OEEPZEGLIW', 'MSIIHOAERA', 'ALRKRRIRER', 'KODIDEDRCD', 'HELWSLEUTH']
words = ['WEEK', 'FIND', 'RANDOM', 'SLEUTH', 'BACKWARD', 'VERTICAL', 'DIAGONAL', 'WIKIPEDIA', 'HORIZONTAL', 'WORDSEARCH']
f129(table, words)
■ このスレッドは過去ログ倉庫に格納されています