在Python中找到球落在网格框中的位置

在Python中找到球落在网格框中的位置

假设我们有一个m x n的网格盒子,每个单元格的板都位于从右上到左下或从左上到右下的位置。 现在将一个球放入盒子中并检查该球是否到达盒子底部。 矩形网格给定为矩阵。 如果单元格标记为1,则对角线板延伸自左上到右下; 如果标记为-1,则该板从右上到左下角延伸。如果n个球放入箱中,我们必须找出有多少球到达了底部。

在Python中找到球落在网格框中的位置

3×3网格盒子的示例。

因此,如果输入如下 mat =

1 | 1 | 1 | -1

-1 | 1 | 1 | -1

1 | -1 | -1 | 1

1 | -1 | 1 | -1

那么输出将是[-1,-1,-1,-1]

要解决这个问题,我们将按以下步骤进行 –

  • i:mat中的行数

  • j:mat中的列数

  • res:一个新的列表

  • 对于值范围为0到j的val,执行以下操作

    • x:val

    • 对于范围0到i的r,执行以下操作

      • s:mat[r,x]

      • x:x + mat[r,x]

      • 如果x < 0或x >= j或mat[r,x]与s不同,则

      • 在res末尾添加元素-1

      • 退出循环

    • 否则,

      • 在res末尾添加x
  • 返回res

示例

让我们看看以下实现以更好地理解

def solve(mat):
   i, j = map(len, (mat, mat[0]))
   res = []
   for val in range(j):
      x = val
      for r in range(i):
         s = mat[r][x]
         x += mat[r][x]
         if x < 0 or x >= j or mat[r][x] != s:
            res += [-1]
            break
      else:
         res += [x]
      return res

print(solve([[1, 1, 1, -1], [-1, 1, 1, -1], [1, -1, -1, 1],[1, -1, 1, -1] ]))

输入

[[1, 1, 1, -1], [-1, 1, 1, -1], [1, -1, -1, 1],[1, -1, 1, -1] ]

输出

[-1, -1, -1, -1]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程