【发布时间】:2017-02-20 21:22:48
【问题描述】:
假设我有一个 10x10 单元板。每个单元格的索引从 1 到 100(基于 1 的索引)。该板是一个单元格列表:[1, 2, 3, ..., 100]。
任务。给定一个单元格的索引,找出覆盖它的所有单元格。
例如:
1 | 2 | 3 | 4
_____________
5 | 6 | 7 | 8
_____________
9 |10 |11 |12
_____________
13|14 |15 |16
给定索引:11
返回:[6, 7, 8, 12, 16, 15, 14, 10],订单不是问题。
我的解决方案:
def allAdjacentCell(given_index):
result = []
dimension = 4 # length of a line
if (1 <= given_index - dimension <= 16):
result.append(given_index - 1) # the cell above the given cell
if (1 <= given_index + dimension <= 16):
# below given index
if (1 <= given_index - 1 <= 16):
# ...
if (1 <= given_index + 1 <= 16):
# ...
# check for diagonal cells
return result
如果给定的单元格位于棋盘中心的某个位置,我的方法似乎返回了正确的结果。但是如果给定的单元格在角落或边缘,那就错了。例如,如果给定单元格 = 5,则该方法将包括索引 4 处的单元格,尽管它不与 5 相邻。
解决这个问题的正确方法是什么?
【问题讨论】:
-
你的董事会是如何代表的?一个列表?列表列表?
-
是的,它是一个单一的列表。我把它包含在问题中,非常感谢。
-
这里被称为摩尔社区。span>
-
这会容易得多,如果你的 indeces 开始于
0 -
我会改变基础然后...