【问题标题】:Getting diagonals of this matrix获取此矩阵的对角线
【发布时间】:2019-09-28 07:20:54
【问题描述】:

我正在尝试创建一个函数,该函数将从列表中的列表中获取对角线,也就是我的单词搜索难题的矩阵。

def get_left_up (start_x, start_y, board):
word = []
for row in range (start_x, -1,-1):
    for col in range (start_y,-1, -1):
        word.append(board[row][col])
word = ''.join(word)
return word

get_left_down (start_x, start_y, board):
word = []
for row in range (start_x,len(board)):
    for col in range (start_y,-1,-1):
        word.append(board[row][col])
word = ''.join(word)
return word

def get_right_up (start_x, start_y, board):
word= []
for row in range (start_x,-1,-1):
    for col in range (start_y,len(board)):
        word.append(board[row][col])
word = ''.join(word)
return word

def get_right_down (start_x, start_y, board):
word = []
for row in range (start_x, len(board)):
    for col in range (start_y,len(board)):
      word.append(board[row][col])
word = ''.join(word)
return word

到目前为止,我应该处理的功能。然而,有些不对劲。我打算将与正在搜索的单词匹配的第一个字母的坐标的参数输入到板上,并从对角线的每个方向连接字符。

【问题讨论】:

  • 您应该只有一个循环来同时更新列号和行号,而不是两个叠瓦式循环。您可以使用while 循环,测试您是否留在板上。

标签: python search word diagonal


【解决方案1】:

对于右下对角线,您需要在同一迭代中增加 x- 和 y-,而不是循环遍历特定行的所有列条目。

def get_right_down (start_x, start_y, board):
   word = []
   col = start_y
   for row in range (start_x, len(board)):
      if col >= len(board):
         break
      word.append(board[row][col])
      col = col + 1
   return ''.join(word)

【讨论】:

    猜你喜欢
    • 2023-04-08
    • 1970-01-01
    • 2016-02-15
    • 2021-09-30
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多