当前位置: 首页 > 知识库问答 >
问题:

在NxN板中查找与给定索引相邻的所有索引

楚彦
2023-03-14

假设我有一个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不相邻。

解决这个问题的正确方法是什么?

共有1个答案

岑炯
2023-03-14

我们注意到,只有当索引值位于最右边或最左边的列或顶部或底部的行时,我们才会获得“rougue”值。

顶/底行流氓值仅为负值或超出限制的值。

对于最左边列中的索引,rogue值将具有%DIM=0。

对于最右边列中的索引,rogue值将具有%dim=1。

因此,我们只需要将它们从中心的一个指数的标准值中过滤掉。

def all_adjacent(index,dim):
    arr = [index+1,index-1,index+dim,index-dim,index+dim+1,index+dim-1,index-dim+1,index-dim-1]
    if index%dim==0: ## right most row
         arr = filter(lambda x:x%dim!=1,arr)
    if index%dim==1: ## left most  row
        arr = filter(lambda x:x%dim!=0,arr)

    arr = filter(lambda x:x>=1 and x<=dim*dim,arr)  ## top and bottom rows

    return arr
 类似资料:
  • 如何根据对象数组的条件获取所有索引?我已经尝试了下面的代码,但是它只返回第一次出现的代码。

  • 问题内容: 如何使用Java在ElasticSearch中查找给定索引的别名? 通过使用REST API,这非常容易 https://www.elastic.co/guide/zh-CN/elasticsearch/reference/1.x/indices- aliases.html#alias- retrieving 但是我无法找到有关如何通过Java API进行操作的良好参考。 问题答案:

  • 问题内容: 我想从一维numpy数组(或向量)中选择多个不相邻的范围。 假设: 当然,这可行: 这可以通过单个索引获取: 但是,如果我要选择范围,该怎么办? 我试过了: 有没有简单的方法可以执行此操作,或者我需要分别生成它们并进行连接? 问题答案: 您需要在索引之前或之后进行串联。 使它变得容易 扩展切片并将其连接。 您可以混合切片和列表: 在索引之前进行连接可能比在之后进行连接要快,但是对于这样

  • 问题内容: 老实说,这个问题很简单。有没有一种方法可以快速查找数组中某个元素的所有出现而无需循环遍历它?似乎所有内置方法仅返回第一次出现的索引,而不是全部返回。 拥有返回索引数组的样式方法将是很不错的。有什么想法吗? 预先感谢您的任何投入! 编辑: 感谢大家的回复!看来我应该对此更加清楚。我目前的操作方式是扩展,其外观与下面发布的一个哑光非常相似。我知道,任何执行此操作的方法都必须在内部遍历数组,

  • 我知道总是打印第一次出现的索引。我如何打印所有的索引?

  • 我在所有日志中都有一个字段“location”,其中包含“lat”和“lon”字段。弹性体上的测井指数不同。其中一些转到“logstash YYY-MM-dd”,另一些转到“异常YYYY-MM-dd”,还有许多其他。但我不能让它们都将位置字段映射为geo_point。我知道默认映射和动态映射,但我无法使其工作。我不了解文档,也没有在网上找到明确的例子。我想要的是,elastic管理来自任何日志的所