(受到有关数学问题的启发)
定义
给定一个n x n
方阵一个,我们可以把它invertible
是否存在某些n x n
方阵乙,使得AB = BA = 我ñ,与我ñ是大小的单位矩阵n x n
(与主对角线的矩阵1
S和别的0
)和AB和BA代表通常的矩阵乘法(在此不做介绍-采用线性代数类)。
从这一点,我们可以称之为一个m x n
矩阵C ^ totally invertible
如果每一个k x k
的子矩阵(定义见下文)Ç是可逆的所有k > 1
,k <= (smaller of m,n)
。
子矩阵定义为从原始矩阵删除任何数量的行和/或列之后的结果矩阵。例如,可以通过如下删除第一行和中间一列,将下面的3x3
矩阵C转换为2x2
子矩阵C':1 2 3
2 5 8
C = [[1 2 3]
[4 5 6] --> C' = [[4 6]
[7 8 9]] [7 9]]
请注意,有许多不同的子矩阵可能性,以上仅是示例。此挑战仅与所产生的子矩阵为k x k
方阵的问题有关。
挑战
给定一个输入矩阵,确定它是否完全可逆。
输入
- 一个大小单一的矩阵
m x n
,任何合适的格式。 - 在不失一般性的前提下,您可以假设
m <= n
或m >= n
,无论哪个对您的代码而言都是更合适的,然后以这种方式进行输入(即,您可以免费获得转置操作)。 - 输入矩阵的大小将不小于
3 x 3
,并且也不得大于您的语言可以处理的大小。 - 输入矩阵将仅包含来自Z +的数值(正整数)。
输出
- 甲truthy / falsey对于是否输入矩阵值是完全可逆的。
规则
例子
Truthy
[[1 2 3]
[2 3 1]
[3 1 2]]
[[2 6 3]
[1 12 2]
[5 3 1]]
[[1 2 3 4]
[2 3 4 1]
[3 4 1 2]]
[[2 3 5 7 11]
[13 17 19 23 29]
[31 37 41 43 47]]
Falsey
[[1 2 3]
[4 5 6]
[7 8 9]]
[[1 6 2 55 3]
[4 5 5 5 6]
[9 3 7 10 4]
[7 1 8 23 9]]
[[2 3 6]
[1 2 12]
[1 1 6]]
[[8 2 12 13 2]
[12 7 13 12 13]
[8 1 12 13 5]]
@feersum哎呀-谢谢大家。那应该在Truthy之下了,下面的那个应该
—
AdmBorkBork '16
6
在角落里了,而不是7
。笨拙的错字。
起初,我以为标题是“完全可逆式潜水艇”。
—
user2357112支持Monica
2 6 3; 1 12 2; 5 3 1
哪里?