You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现字母网格多方向遍历及目标单词检测咨询

6x6字母网格遍历检测实现代码及说明

以下实现默认输入的6x6网格为二维列表结构,例如grid = [['r','a','w','b','i','t'], ['x','a','y','c','z','h'], ...],每个元素为单个字符。所有函数支持两种调用模式:不传word参数时返回对应方向的所有字符序列列表,传word参数时直接返回布尔值,表示目标字符串是否存在于对应方向的序列中。

# 示例6x6测试网格,可替换为实际输入
grid = [
    ['r', 'a', 'w', 'b', 'i', 't'],
    ['x', 'a', 'y', 'c', 'z', 'h'],
    ['p', 'q', 'r', 's', 't', 'u'],
    ['t', 'k', 'l', 'm', 'n', 'o'],
    ['u', 'v', 'w', 'x', 'y', 'z'],
    ['n', 'm', 'a', 'b', 'c', 'd']
]

1. func_left:逐行从左到右遍历

直接拼接每一行的字符即可,逻辑最简单。

def func_left(grid, word=None):
    # 逐行拼接字符生成字符串
    line_strs = [''.join(row) for row in grid]
    if word:
        # 检测word是否是任意行字符串的子串
        return any(word in s for s in line_strs)
    return line_strs

输出示例:['rawbit', 'xayczh', 'pqrstu', 'tklmno', 'uvwxyz', 'nmabcd']


2. func_up:逐列从上到下遍历

按列号循环,每一列取所有行对应位置的字符拼接。

def func_up(grid, word=None):
    col_total = len(grid[0]) # 固定为6
    col_strs = []
    for col_idx in range(col_total):
        # 取所有行的第col_idx个字符,拼接为列字符串
        cur_col = ''.join([grid[row_idx][col_idx] for row_idx in range(len(grid))])
        col_strs.append(cur_col)
    if word:
        return any(word in s for s in col_strs)
    return col_strs

输出示例:['rxptun', 'aqkvm', 'wyrwa', 'bsmxb', 'iznyc', 'thouzd']


3. func_slideright:沿右下对角线(左下向右上延伸)遍历

这类对角线的核心特征是行索引 + 列索引 = 固定值,固定值范围从0(0+0)到10(5+5),按固定值从小到大遍历即可拿到所有目标序列。

def func_slideright(grid, word=None):
    n = len(grid) # 网格边长,固定为6
    diag_strs = []
    # 行+列的和的范围是0到2n-2,也就是0到10
    for sum_val in range(2*n - 1):
        cur_diag = []
        for row_idx in range(n):
            col_idx = sum_val - row_idx
            # 只保留合法的列索引值
            if 0 <= col_idx < n:
                cur_diag.append(grid[row_idx][col_idx])
        diag_strs.append(''.join(cur_diag))
    if word:
        return any(word in s for s in diag_strs)
    return diag_strs

输出示例:['r', 'xa', 'paw', 'tyqa', 'ulkry', 'nmwscb', 'mvoniz', 'abxzt', 'cyu', 'zd', 'd'],符合你提到的短序列输出规则。


4. func_slideleft:沿左下对角线(右下向左上延伸)遍历

这类对角线的核心特征是行索引 - 列索引 = 固定值,固定值范围从-5(0-5)到5(5-0),按固定值从小到大遍历即可拿到所有目标序列。

def func_slideleft(grid, word=None):
    n = len(grid)
    diag_strs = []
    # 行-列的差的范围是-(n-1)到n-1,也就是-5到5
    for diff_val in range(-(n-1), n):
        cur_diag = []
        for row_idx in range(n):
            col_idx = row_idx - diff_val
            # 只保留合法的列索引值
            if 0 <= col_idx < n:
                cur_diag.append(grid[row_idx][col_idx])
        diag_strs.append(''.join(cur_diag))
    if word:
        return any(word in s for s in diag_strs)
    return diag_strs

输出示例:['t', 'ih', 'bzu', 'wcso', 'aytnd', 'rxsma', 'palxb', 'xqvyc', 'pkwz', 'um', 'n'],符合你提到的短序列输出规则。


测试调用示例

print(func_left(grid)) # 输出所有行序列
print(func_up(grid, word="rxpt")) # 检测"rxpt"是否存在于列序列中,返回True/False
print(func_slideright(grid))
print(func_slideleft(grid))

内容的提问来源于stack exchange,提问作者Bruffff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:36:03