首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在4x4电路板上查找给定元素右侧的元素

在4x4电路板上查找给定元素右侧的元素
EN

Stack Overflow用户
提问于 2014-11-24 04:16:20
回答 2查看 24关注 0票数 0

我现在被一个看似简单的问题搞得大吃一惊。

我有一个4x4的电路板,有顺序排列的元素,如下所示:

代码语言:javascript
复制
1  2   3  4    
5  6   7  8
9  10 11 12
13 14 15 16

我想写一个列表理解,在给定方向和元素的情况下,返回一个列表,其中包含给定方向上的所有元素。例如:给出元素10的北方向为6和2。我已经确定了3个方向,北,南和西,但我不能计算出东。

我对3个元素的列表理解是,Id是有问题的元素,并列出从1到16的列表:

代码语言:javascript
复制
     North->
        [ X | X <- List, X < Id, (Id-X) mod 4 == 0]
    South ->
        [ X | X <- List, X > Id, (Id-X) mod4 == 0]
    West ->
        [ X | X <- List, X < Id, X > ((Id-1) div 4)*4]

我找不到适用于East的方程式。有什么帮助吗?

编辑:

例如,East 14应提供15和16。East 16应该给出空名单。我真的被难住了。

EN

回答 2

Stack Overflow用户

发布于 2016-03-18 09:35:16

这个问题的关键是使用除法和模数来区分哪些数字在同一行上。

如果两个值具有相同的模运算结果,则它们在同一列上。如果它们小于给定值,则它们为北。如果它们大于给定值,则它们是南边的。

通常,如果两个值具有相同的整型除法结果,则它们应该在同一行上。这对于从0开始的正方形总是正确的;但是,此示例使用从1开始的正方形。不测试给定值和电路板上的数字的除法结果,而是从给定值和测试值中减去1,然后除以并比较结果。

伪代码

代码语言:javascript
复制
given = 10
for x in board:
    if int( (given - 1) / 4 ) equals int( (x - 1) / 4 ):
        if x < given:
            x is west
        if x > given:
            x is east

以下是用Python编写的示例函数

代码语言:javascript
复制
import math
def figure(board, num, dir):
    dir = dir.lower()
    sq = math.sqrt(len(board))
    if sq != int(sq) or num not in board:
        return "invalid sqaure"

    if dir == "n":
        return [x for x in board if x < num and x%sq == num%sq] 
    elif dir == "s":
        return [x for x in board if x > num and x%sq == num%sq]
    elif dir == "e":
        return [x for x in board if x > num and int((x-1)/sq) == int((num-1)/sq)]
    elif dir == "w":
        return [x for x in board if x < num and int((x-1)/sq) == int((num-1)/sq)]
    else:
        return "invalid direction"
票数 0
EN

Stack Overflow用户

发布于 2016-03-18 10:38:37

我认为Esat应该是:

代码语言:javascript
复制
ESAT->    

 [ X | X <- List, X >Id, X <= ⌈Id / 4)⌉ * 4  ]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27093799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档