相关疑难解决方法(0)

矩阵中对角元素的总和

我试图找出矩阵中对角线元素的总和.这里,n是方阵的大小,a是矩阵.有人可以向我解释这里发生了什么.

n = 3
a = [[11,2,4],[4,5,6],[10,8,-12]]
sum_first_diagonal = sum(a[i][i] for i in range(n))
sum_second_diagonal = sum(a[n-i-1][n-i-1] for i in range(n))
print(str(sum_first_diagonal)+" "+str(sum_first_diagonal))
Run Code Online (Sandbox Code Playgroud)

python matrix

17
推荐指数
2
解决办法
3万
查看次数

在Haskell中获取矩阵的所有对角线

二维列表如下:

1 | 2 | 3
- - - - -
4 | 5 | 6
- - - - -
7 | 8 | 9
Run Code Online (Sandbox Code Playgroud)

或者在纯粹的哈克尔

[ [1,2,3], [4,5,6], [7,8,9] ]
Run Code Online (Sandbox Code Playgroud)

预期的输出diagonals [ [1,2,3], [4,5,6], [7,8,9] ]

[ [1], [4, 2], [7, 5, 3], [8, 6], [9] ]
Run Code Online (Sandbox Code Playgroud)

写作allDiagonals(包括反对角线)是微不足道的:

allDiagonals :: [[a]] -> [[a]]
allDiagonals xss = (diagonals xss) ++ (diagonals (rotate90 xss))
Run Code Online (Sandbox Code Playgroud)

我对这个问题的研究

类似的问题在StackOverflow

  • Python这个问题是关于Python中的同样问题,但Python和Haskell是非常不同的,所以这个问题的答案与我无关.

  • 只有一个这个问题和答案都在Haskell中,但只是关于中心对角线.

Hoogle

搜索给[[a]] -> …

haskell matrix

12
推荐指数
3
解决办法
3120
查看次数

Ruby获取二维数组中的对角元素

我正在尝试使用2D ruby​​数组时遇到一些问题,当我进行数组切片时,我的LOC减少了很多.所以,例如,

require "test/unit"

class LibraryTest < Test::Unit::TestCase

  def test_box
    array = [[1,2,3,4],[3,4,5,6], [5,6,7,8], [2,3,4,5]]
    puts array[1][2..3] # 5, 6
    puts array[1..2][1] # 5, 6, 7, 8
  end
end
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法获得对角切片?让我们说我想从[0,0]开始并想要一个3的对角切片.然后我会得到[0,0],[1,1],[2,2]的元素,我会得到一个类似的数组[1,4,7]例如上面.是否有任何神奇的单行红宝石代码可以实现这一目标?3次做{某些神奇的东西?}

ruby multidimensional-array

9
推荐指数
2
解决办法
5023
查看次数

对角列出嵌套列表中的元素

这是我的第一篇文章,我是一个非常新的这个很棒的网站.

我想在对角线上列出3x3阵列中的所有元素:

L = [  [1, 2, 3],
       [4, 5, 6],
       [7, 8, 9] ]
Run Code Online (Sandbox Code Playgroud)

预期产量:

[[7], [4, 8], [1, 5, 9], [2, 6], [3]]
Run Code Online (Sandbox Code Playgroud)

另外,我如何将它推广到任何N x N阵列?

编辑:我注意到之前已经问过这个问题但是我正在寻找一种方法,而不需要导入numpy或任何库.

编辑2:我的一个同学提供了这个解决方案,我最喜欢它:

由于您从左下角开始查找对角线,您可以通过从方块的右上角开始并最终反转解决方案来完成此操作.我的方法是首先反转L中的每一行,然后将每个元素附加到其对应的对角线列表中.这里的见解是你开始在每一行K中追加元素,而不是在最终列表的第一个子列表中,但是从indice K开始.例如在将行[4,5,6]反转到行[6,5之后4],我会将6添加到我的对角排序列表的第二个子列表中(因为这是第2行),然后我将5添加到第3个子列表,然后我将4添加到第4个子列表.但是,如果我在对角线列表中没有第四个子列表,我会添加第四个空列表,然后用4填充它.

我的解释可能不太清楚,所以这里是我的代码.

def diagonal(l):

    L = l[:]
    return_list = [[] for i in range(len(L))]

    for line in range(len(L)):
        L[line].reverse()
        i = line

        for elem in L[line]:
            if i >= len(return_list):
                return_list.append([])

            return_list[i].append(elem)
            i += 1

    return_list.reverse()
    return return_list
Run Code Online (Sandbox Code Playgroud)

python python-3.x

7
推荐指数
1
解决办法
3096
查看次数

检查2d列表中的对角线(Python)

最初的问题:对于给定的3x3 tic tac toe board,检查其中一个玩家是否赢了.

到目前为止,我提出的最简单的解决方案是旋转矩阵并总结每一行:

board
[[0, 1, 2], [3, 4, 5], [6, 7, 8]]

pr(board)
0 1 2
3 4 5
6 7 8

pr(zip(*board))
0 3 6
1 4 7
2 5 8
Run Code Online (Sandbox Code Playgroud)

0..9以上数字仅用于显示棋盘上的位置,通常他们将为球员1填充1,为球员2填充-1,为未填充位置填充0.逐行进行,如果总和达到3或-3,则这是获胜区块.

但是,不检查对角线.有没有办法以优雅+高效的方式从这样的矩阵中提取对角线?我并不是指"手动"(0,1,2)使用普通索引,而是获得nxn矩阵的对角线.

PS pr只是打印2d列表的辅助函数:

def pr(x):
    for row in x:
        print ' '.join(map(str, row))
Run Code Online (Sandbox Code Playgroud)

python 2d

2
推荐指数
1
解决办法
6358
查看次数

标签 统计

python ×3

matrix ×2

2d ×1

haskell ×1

multidimensional-array ×1

python-3.x ×1

ruby ×1