Untitled

mail@pastecode.io avatarunknown
python
a month ago
1.4 kB
1
Indexable
Never
board = """
DNG
IO0
HMB"""

board = board.split()

def get_word(pos, board):
    return board[pos[0]][pos[1]]
    
def replace_str_index(text,index=0,replacement=''):
    return '%s%s%s'%(text[:index],replacement,text[index+1:])
    
def get_move(pos, board):
    moves = [[-1, -1], [-1, 0], [-1, 1], [0, -1], [0, 1], [1, -1], [1, 0], [1, 1]]
    col_len = len(board)
    row_len = len(board[0])
    res = []
    for move in moves:
        col_pos = move[0] + pos[0]
        row_pos = move[1] + pos[1]
        if 0 > col_pos or col_pos > col_len - 1 or 0 > row_pos or row_pos > row_len - 1 or board[col_pos][row_pos] == '0':
            continue
        res.append([col_pos, row_pos])
    return res
    
def dynamic_board(pos, board, step):
    queue = []
    word = board[pos[0]][pos[1]]
    queue.append([word, board, pos])
    
    while queue:
        cur_word, cur_board, cur_pos = queue.pop(0)
        print(cur_word)
        if len(cur_word) ==  step:
            break
        moves = get_move(cur_pos, cur_board)
        
        for move in moves:
            new_word = cur_word + get_word(move, cur_board)
            new_board = cur_board
            new_board[move[0]] = replace_str_index(new_board[move[0]], move[1], '0')
            queue.append([new_word, new_board, move])
dynamic_board([0, 0], board, 3)