import sys
def read_board(board_filename):
bd = []
for line in open(board_filename):
bd.append(line.strip())
return bd
def print_board(board):
for i in range(0,len(board)):
for j in range(0,len(board[i])):
sys.stdout.write(board[i][j])
sys.stdout.write(' ')
print
# This function should take in a list of strings and print the board
def word_going_right(board,word,row,col):
i = 0
f = 0
while True:
if word[i] == board[row][col]:
f += 1
if f == len(word):
return True
if word[i] != board[row][col]:
return False
i += 1
f += 1
if col >= len(board[0]):
return False
def word_going_left(board,word,row,col):
i = 0
f = 0
while True:
if word[i] == board[row][col]:
f += 1
if f == len(word):
return True
if word[i] != board[row][col]:
return False
i += 1
f += 1
col -= 1
if col <= 0:
return False
def word_going_up(board,word,row,col):
i = 0
f = 0
while True:
if word[i] == board[row][col]:
f += 1
if f == len(word):
return True
if word[i] != board[row][col]:
return False
i += 1
f += 1
row -= 1
if row <= 0:
return False
def word_going_down(board,word,row,col):
i = 0
f = 0
while True:
if word[i] == board[row][col]:
f += 1
if f == len(word):
return True
if word[i] != board[row][col]:
return False
i += 1
row += 1
if row >= len(board):
return False
def word_going_downright(board,word,row,col):
i = 0
f = 0
while True:
if word[i] == board[row][col]:
f += 1
if f == len(word):
return True
if word[i] != board[row][col]:
return False
i += 1
row += 1
col += 1
if row >= len(board) or col >= len(board[0]):
return False
def word_going_downleft(board,word,row,col):
i = 0
f = 0
while True:
if word[i] == board[row][col]:
f += 1
if f == len(word):
return True
if word[i] != board[row][col]:
return False
i += 1
row += 1
col -= 1
if row >= len(board) or col <= 0:
return False
def word_going_upright(board,word,row,col):
i = 0
f = 0
while True:
if word[i] == board[row][col]:
f += 1
if f == len(word):
return True
if word[i] != board[row][col]:
return False
i += 1
f += 1
row -= 1
col += 1
if row < 0 or col >= len(board[0]):
return False
def word_going_upleft(board,word,row,col):
i = 0
f = 0
while True:
if word[i] == board[row][col]:
f += 1
if f == len(word):
return True
if word[i] != board[row][col]:
return False
i += 1
row -= 1
col -= 1
if row <= 0 or col <= 0:
return False
def find_word_in_puzzle(board,word):
for r in range(0,len(board)):
for c in range(0,len(board)):
if word_going_right(board,word,r,c) == True:
row = r
col = c
direction = 'right'
return True
if word_going_left(board,word,r,c) == True:
row = r
col = c
direction = 'left'
return True
if word_going_up(board,word,r,c) == True:
row = r
col = c
direction = 'up'
return True
if word_going_down(board,word,r,c) == True:
row = r
col = c
direction = 'down'
return True
if word_going_downright(board,word,r,c) == True:
row = r
col = c
direction = 'down and right'
return True
if word_going_downleft(board,word,r,c) == True:
row = r
col = c
direction = 'down and left'
if word_going_upright(board,word,r,c) == True:
row = r
col = c
direction = 'up and right'
if word_going_upleft(board,word,r,c) == True:
row = r
col = c
direction = 'up and left'
if True:
"%s starts at (%d, %d) going" % (word,r,c)
if False:
"%s can't be found" % (word)
# This function shoud call eight functions (one for each direction)
# An example call: is_word_going_right(board, word, row, col)
# See the HW 5 pdf.
if __name__ == '__main__':
board_filename = raw_input("Enter the file containing the board ==> ")
print board_filename
print # print an empty line
# board is a list of strings (a bit simpler than the Sudoku structure)
board = read_board(board_filename)
# print the board, you must write this function
print_board(board)
print # print an empty line
words_filename = raw_input("Enter the file containing the words ==> ")
print words_filename
print # print an empty line
for line in open(words_filename):
word = line.strip()
find_word_in_puzzle(board, word)