Questions tagged «matrix»

矩阵是排列在具有行和列的矩形中的数字列表。在编程中,它也称为2D数组。如果您面临的挑战是处理矩阵,请使用此标签。

8
矩阵的特征值
给定一个正方形矩阵,输出矩阵的特征值。每个特征值应重复与其代数多重性相等的次数。 矩阵的特征值A是标量值λ,使得对于某些列向量v,A*v = λ*v。它们也是的特征多项式的解决方案A:(det(A - λ*I) = 0其中I与相同的维的单位矩阵A)。 输出必须精确到3个有效数字。对于您选择的语言,所有输入和输出都将在数值的可表示范围内。 可以使用内置函数,但是建议您包括不使用内置函数的解决方案。 测试用例 在这些测试用例中,I代表虚部。复数以形式书写a + b*I。所有输出的精度为3位有效数字。 [[42.0]] -> [42.0] [[1.0, 0.0], [0.0, 1.0]] -> [1.00, 1.00] [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]] -> [16.1, -1.12, -1.24e-15] [[1.2, 3.4, 5.6, 7.8], [6.3, 0.9, -5.4, -2.3], [-12.0, -9.7, 7.3, 5.9], [-2.5, …

4
用雅可比(Jacobi)方法求解矩阵方程(修订)
数学背景 设A为实数的N×N矩阵,N个实数的ba向量和xa个N个未知实数向量。矩阵方程为Ax = b。 Jacobi的方法如下:分解A = D + R,其中D是对角线矩阵,R是其余项。 如果您做出初始猜测解x0,则改进的解为x1 =逆(D)*(b-Rx),其中所有乘法都是矩阵矢量乘法,而逆(D)是矩阵逆。 问题规格 输入:完整的程序应接受以下数据作为输入:矩阵A,向量b,初始猜测x0和“错误”数e。 输出:程序必须输出最少的迭代次数,以使最新的解决方案与实际解决方案之间的差异最多为e。这意味着矢量的每个分量的绝对大小最多相差e。您必须使用Jacobi的方法进行迭代。 如何输入数据是您的选择 ; 它可以是您自己在命令行上的语法,也可以从文件中获取输入,无论您选择什么。 数据的输出方式是您的选择 ; 可以将其写入文件,在命令行中显示,以ASCII文字形式书写,并且只要人类可以阅读即可。 更多详情 您没有得到真正的解决方案:如何计算真正的解决方案完全取决于您自己。例如,您可以通过Cramer规则或直接计算逆来解决它。重要的是您拥有一个能够与迭代进行比较的真正解决方案。 精度是一个问题;有些人的“确切解决方案”可能会有所不同。出于该代码的目的,精确的解决方案必须为10个小数位。 绝对清楚地说,即使您当前迭代解决方案的一个组成部分比真实解决方案中的相应组成部分都增加了e,那么您需要保持迭代。 N的上限取决于您所使用的硬件以及您愿意花多少时间运行该程序。出于此代码高尔夫球的目的,假定最大值N = 50。 前提条件 调用程序时,您可以随时假设以下条件成立: N> 1且N <51,即您永远不会得到标量方程,而总是矩阵方程。 所有输入都在实数范围内,并且永远不会复杂。 矩阵A总是使方法收敛到真正的解,这样您总是可以找到许多迭代以最小化小于或等于e的误差(如上定义)。 A 永远不是零矩阵或恒等矩阵,即有一个解。 测试用例 A = ((9, -2), (1, 3)), b = (3,4), x0 = (1,1), e …

30
单数:字母
目的 编写一个程序或函数(或等效函数),以进行排序并返回随机大小矩阵中的奇数字母。 细节 您将通过矩阵(作为字符串)作为诸如此类的随机尺寸的输入。 bbbbbbbbbb bbbbbdbbbb bbbbbbbbbb bbbbbbbbbb bbbbbbbbbb 您的工作是找到与其余字母不匹配的字母(在本例中为d,在第2行第6行找到),并返回该字母作为输出。矩阵将由字母A-Z,a-z换行符(\n,仅在行的末尾)组成,尺寸范围为5x5至10x10(25-100个字母)。 有标准漏洞。这是一场代码挑战赛。最小字节码的条目获胜。 输入值 如果是程序,则输入将通过标准输入作为字符串传递;如果是函数(或类似功能),则作为参数传递。 输出量 甲单个字符是“奇数”在基质中或 None,nil,NUL,或该字符串"None"如果没有“奇数”字。 更多例子 AAAAAAA AAAAAAA AAAAAAA AAAIAAA AAAAAAA 回答: I vvqvvvvvvv vvvvvvvvvv vvvvvvvvvv vvvvvvvvvv vvvvvvvvvv 回答: q puuuuuuuu uuuuuuuuu uuuuuuuuu uuuuuuuuu uuuuuuuuu uuuuuuuuu uuuuuuuuu uuuuuuuuu uuuuuuuuu uuuuuuuuu 回答: p 发电机 这是用Python编写的随机矩阵生成器,可用于测试程序。注意:极有可能会出错,并且不要用奇数字母表示。 显示代码段 Instructions 1. Copy this …

7
简单的DTMF解码:找到电话密钥!
这是一个简单的挑战,有望带来一些创造性的答案。 引用维基百科:“双音多频信令(DTMF)是在电话设备与其他通信设备和交换中心之间的电话线上使用语音频带的带内电信信令系统。” 任务 给定下表中代表列和行频率的两个整数,您的任务是输出相应的键: | 1209 Hz | 1336 Hz | 1477 Hz -------+---------+---------+--------- 697 Hz | 1 | 2 | 3 770 Hz | 4 | 5 | 6 852 Hz | 7 | 8 | 9 941 Hz | * | 0 | # 例子 如果输入为[ 1209, 852 …

17
检查矩阵是否为Toeplitz矩阵
将为您提供一个二维数组和一个数字,并要求您查找给定的矩阵是否为Toeplitz。 输入格式: 您将获得一个将two-dimensional矩阵作为参数的函数。 输出格式: 返回1从功能,如果矩阵是托普利茨,否则返回-1。 限制条件: 3 < n,m < 10,000,000 其中n,行m数是列数,而列数是列数。 样本测试案例: Sample Input : 4 5 6 7 8 9 2 4 6 7 8 9 1 4 6 7 8 0 1 4 6 7 Sample Output : 1 计分 这是代码高尔夫球,因此最短的答案以字节为单位。

7
计算克罗内克积
相关,但有很大的不同。 在下面的例子中,A和B将是2×2矩阵,和矩阵是一个索引。 一个克罗内克产品具有以下特性: A⊗B = A(1,1)*B A(1,2)*B A(2,1)*B A(2,2)*B = A(1,1)*B(1,1) A(1,1)*B(1,2) A(1,2)*B(1,1) A(1,2)*B(1,2) A(1,1)*B(2,1) A(1,1)*B(2,2) A(1,2)*B(2,1) A(1,2)*B(2,2) A(2,1)*B(1,1) A(2,1)*B(1,2) A(2,2)*B(1,1) A(2,2)*B(1,2) A(2,2)*B(2,1) A(2,2)*B(1,2) A(2,2)*B(2,1) A(2,2)*B(2,2) 挑战:给定两个矩阵,A并且B,return A⊗B。 矩阵的大小至少为1-by-1。默认情况下,最大大小将是您的计算机/语言可以处理的大小,但最小5-by-5输入。 所有输入值均为非负整数 不允许使用用于计算Kronecker产品或Tensor / Outer产品的内置函数 一般而言:有关I / O格式,程序和功能,漏洞等的标准规则。 测试用例: A = 1 2 3 4 B = 5 6 7 8 A⊗B …

3
旋转矩阵中的每个2x2块
挑战 给定一个n x m矩阵,n > 1并m > 1 用整数填充 1 2 3 4 5 6 以及具有与2x2矩阵中的块数量一样多的值的整数列表((n-1)*(m-1)如果需要确切的数字) [1,2] 2x2以给定的顺序输出矩阵,其中每个块按列表中的当前值旋转。上面的例子会产生 4 6 2 5 3 1 第一块向右旋转一次,第二块向右旋转两次。 笔记 正整数表示您向右旋转了许多步。 负整数表示您向左旋转了这么多步。 零表示您不旋转。 您逐行旋转块。这意味着您从第一行开始,然后转到右侧。旋转该行中的每个块后,您将转到下一个块。最后,每个程序块仅旋转一次。 请记住,这些块相互重叠。上述第一矩阵具有块[[1,2],[4,5]]和[[2,3],[5,6]]例如。 块的每次旋转都会影响相邻块的旋转。这就是为什么您必须按照上述模式进行旋转。 规则 您可以采用最方便的格式输入。请在您的答案中指定使用哪一个。这并没有让你读矩阵逐块虽然。 允许功能或完整程序。 输入/输出的默认规则。 有标准漏洞。 这是代码高尔夫球,因此最低字节数获胜。Tiebreaker是较早提交的内容。 测试用例 输入格式是矩阵列表和值的常规列表。 [[1,2],[3,4]],[-3]-> [[4,1],[3,2]] [[1,1,1],[1,1,1]],[-333,666]-> [[1,1,1],[1,1,1]] [[1,2,3],[4,5,6]],[1,2]-> [[4,6,2],[5,3,1]] [[1,2,3],[4,5,6],[7,8,9]],[4,0,12,-20]-> [[1,2,3],[4, 5,6],[7,8,9] [[1,2,3,4,5],[5,4,3,2,1],[1,2,3,4,5]],[2,-3,4,1,6, …

3
解决2x2特征系统
对于那些具有线性代数背景的人来说,挑战就这么简单:确定给定复数2x2矩阵的特征值和特征向量。您可能会跳过I / O详细信息等的挑战。对于那些需要对本征系统进行一些复习的人,请继续阅读。 背景 矩阵A的特征方程定义为 det| A - λI | = 0 其中λ是复数(标量)参数,I是单位矩阵,det | ... | 是决定因素。左侧求值为λ的多项式,即特征多项式,在2x2矩阵的情况下,该多项式是二次的。这个特征方程的解决方案是特征值的甲,我们将表示为λ 1和λ 2。 现在,特征向量 v 我的一个满足 A vi = λi vi 对于每一个λ 我,这给你两个方程的两个未知数的系统(的成分v 我),它可以很容易地解决。您会注意到系统实际上是未指定的,特征向量的大小不是由等式确定的。通常,我们将希望对特征向量进行归一化,即√(| x | 2 + | y | 2)= 1,其中x和y是向量分量,| x |。2是X乘以其复共轭。 注意,特征值可以是简并的,即,λ 1 =λ 2。在这种情况下,您可能无法满足具有两个线性独立特征向量的单一方程组。 挑战 给定具有复杂元素的2x2矩阵,请确定其两个(可能相同)特征值和每个特征值的归一化特征向量。结果数字必须精确到至少3个(十进制)有效数字。您可以假定任何矩阵元素的实部和虚部都在[-1,1]范围内。 您可以编写函数或程序,通过STDIN,命令行参数,提示或函数参数进行输入。您可以将结果输出到STDOUT,对话框或作为函数返回值。 您可以使用任何方便(但明确)的字符串或列表格式进行输入和输出。您还可以在成对的浮点数或复杂类型之间进行选择,以表示各个数字。 您不得使用内置函数来求解本征系统(如Mathematica …

7
具有奇特秘密力量的阵列战斗
这是一个相对简单的二维数组挑战。 想象一下一个有625英尺长士兵的战场。您指挥奇数部队,但不幸的是,偶数部队的力量使您不堪重负。值得庆幸的是,您的士兵拥有秘密力量:如果每个奇兵和周围同伴的力量可以被秘密力量数字整除,那么他们将发动最终的进攻并取得胜利!您必须尊重每位胜利的士兵。 规则 给定一个25 x 25的整数数组,其中每个元素都包含其x和y位置加1的乘积,返回满足以下条件的每个“胜利”奇数元素的坐标: 元素值及其相邻奇数元素(上,下,左和右)的总和可被输入(秘密幂数)整除。它必须在所有四个侧面上与其相邻且不能在边缘上。 提交可以是需要单个输入的功能或完整程序。输出可以是任何顺序。 我们的25 x 25阵列(战场)如下所示: 1, 1, 1, 1,... 1, 2, 3, 4,... 1, 3, 5, 7,... 1, 4, 7, 10,... etc. 例 这是一个3 x 3的示例: 43, 57, 71 46, 61, 76 49, 65, 81 为了确定某个元素(居中的61)是否获胜,我们将其值与相邻的奇数元素相加。 61 + 57 + 65 = 183 如果总计可被输入整除,则打印元素的x和y位置。如果我们的输入为3,则因为183可被3整除,所以将打印“ …

4
手机充电
挑战经我的大学代码挑战竞赛许可 我们对手机的依赖性使我们每天晚上都对手机充电直至达到电池的最大电量,因此,我们不会在第二天的中间出现断电的风险。甚至有些人在白天看到免费的插座时,会对可能发生的事情收取费用。 我是他们其中的一员。 多年以来,我不断完善自己的技术,以使每晚不给电池充电到最大程度。通过众所周知的重复程序,我可以清楚地知道一天中的哪些时间可以进行部分充电(以及电量将增加多少个单位)以及每次充电之间会降低电池电量的原因。利用这些数据,每天晚上我都要计算出第二天必须离开房屋的最低电池电量,以使其永远不会低于我自己设定的两个门槛。 当我离开已建立的例行程序时,我还没有掌握的是相同的计算方法,但我有几种选择可以做事。例如,这发生在我前往另一个可以以不同方式到达的城市的路上。 在解决该问题的第一种方法中,我假设我想绕着“棋盘”从左上角到右下角移动。在每个“小区”中,我可以为移动电话充电一定的金额,或者我不能对其充电,并且其负载水平会下降。 挑战 给定一个整数的FxC矩阵,输出我需要从左上角到右下角的最小电池电量,而负载水平不得低于2个单位。 在矩阵中,正数表示在必须继续沿自己的路径行驶之前我可以为手机充电多少,而负数表示没有插座,并且移动电话的电池电量降低了该数量。确保源单元格和目标单元格中​​的数量(左上角和右下角)始终为0,其余值(绝对值)不超过100。 给定的示例: ⎡⎣⎢⎢⎢📱−1−11−1−1111−1−1−1−1−1−10⎤⎦⎥⎥⎥[📱−11−1−1−1−1−1−11−1−111−10] \begin{bmatrix} 📱&-1&1&-1 \\ -1&-1&-1&-1 \\ -1&1&-1&-1 \\ 1&1&-1&0 \end{bmatrix} 我需要更少电池的路径是: ⎡⎣⎢⎢⎢📱− 1− 11个− 1− 11个1个1个− 1− 1− 1− 1− 1− 10⎤⎦⎥⎥⎥[📱-1个1个-1个-1个-1个-1个-1个-1个1个-1个-1个1个1个-1个0] \begin{bmatrix} 📱&-1&1&-1 \\ \color{blue}{-1}&-1&-1&-1 \\ \color{blue}{-1}&1&-1&-1 \\ \color{blue}{1}&\color{blue}{1}&\color{blue}{-1}&0 \end{bmatrix} 我需要的最小电池电量是4 笔记 起点总是在左上角 终点总是在右下角 您无法进入已通过的单元。示例:位置(0,1)后,您将无法到达起始点(0,0) 您的电池电量不能(出于任何原因)低于2 您可以假设总会有起点和终点 如果需要,可以将一维数组作为多维数组 [1,2,3] …

15
矩阵拼图碎片
(受到https://codegolf.meta.stackexchange.com/a/17272/42963的随机启发) 给定一个矩形的数字矩阵(即0 - 9),输出矩阵的“块”,就好像这些数字被连接在一起形成单个块(按数字升序排列)一样。这些部件保证只能正交连接-没有任何部件将对角连接。最多只能有10个片段(即,一个3片段不会在同一矩阵中出现两次)。 例如,给定矩阵 0 1 1 1 0 0 1 2 3 3 2 2 以下是片段,以及示例输出: 0 0 0 1 1 1 1 2 2 2 3 3 间距对于保持部件的形状很重要,但是部件不一定需要内部间距。作品本身应以某种方式以一致的方式进行区分(例如,作品之间的换行符,确保每一个都是不同的字符,等等)。此外,不允许使用多余的空格(例如,尾随换行符或前导列)。例如,以下内容也将有效: 0 00 111 1 2 22 33 要么 # ## ### # # ## ## 但是以下内容不是(请注意0s 后面的空格): 0 0 …
10 code-golf  matrix 

1
Tatamibari求解器
背景 Tatamibari是由Nikoli设计的逻辑难题。 Tatamibari拼图游戏在带有三种不同符号的矩形网格上播放:+,-。和|。求解器必须根据以下规则将网格划分为矩形或正方形区域: 每个分区中必须只包含一个符号。 一个+符号必须包含在一个正方形。 甲|符号必须被包含在具有比宽度更大的高度的矩形。 甲-符号必须被包含在具有比高度较大的宽度的矩形。 四个片段可能永远不会共享相同的角落。(这是日本榻榻米瓷砖通常的放置方式。) 以下是一个示例难题,并提供了解决方案: 任务 解决给定的Tatamibari难题。 输入输出 输入是一个2D网格,代表给定的Tatamibari拼图。每个单元包含四个字符之一:+,-,|,和您所选择的字符来表示一个非线索细胞。在测试用例中,使用星号*。 您可以选择任何合适的输出格式,这些输出格式可以明确表示Tatamibari拼图的任何有效解决方案。这包括但不限于:(如有疑问,请在评论中提问。) 4元组的列表,其中每个元组包括矩形的顶部索引,左侧索引,宽度和高度(或任何等效表示形式) 与输入形状相同的数字网格,其中每个数字代表一个矩形 坐标集列表,每个坐标集包括矩形中单元格的所有坐标 如果难题有多个解决方案,则可以输出任意数量(一个或多个)的有效解决方案。输入保证至少有一个解决方案。 测试用例 Puzzle: |-* *+| *-* Solution: 122 134 554 ===== Puzzle: +*** **|* *+** ***- Solution: 1122 1122 3322 3344 ====== Puzzle: |*+*+ ***** ****- ***+| +**** Solution: 12233 12233 44444 55667 …

7
谁的邻居是敌对的?
介绍 出于挑战的目的,我们将在正方形矩阵定义元素的邻居(使得)为 与对角线,水平或垂直相邻的所有项。(即,它们“环绕”而不环绕)。ËËE一个一个AË= A我,ĴË=一个一世,ĴE=A_{i,j}一个一个AEËËE ËËE 对于悬挂物,的邻居的正式定义用于 MATIX为(0索引): 中 一个我,Ĵ一个一世,ĴA_{i,\:j}n × nñ×ñn\times n一个一个Añ我,Ĵ= { A一,b| (一,b )∈ Ë我,Ĵ∩([ 0 ,n )∩Z )2}ñ一世,Ĵ={一个一个,b∣(一个,b)∈Ë一世,Ĵ∩([0,ñ)∩ž)2}N_{i,\:j}=\{A_{a,\:b}\mid(a,b)\in E_{i,\:j}\:\cap\:([0,\:n)\:\cap\:\Bbb{Z})^2\}Ë我,Ĵ= { i − 1 ,我,i + 1 } × { j − 1 ,Ĵ ,j + 1 } \ { i ,j }Ë一世,Ĵ={一世-1个,一世,一世+1个}×{Ĵ-1个,Ĵ,Ĵ+1个} \ {一世,Ĵ}E_{i,\:j}=\{i-1,\:i,\:i+1\}\times \{j-1,\:j,\:j+1\} \text{ \\ …

2
孤岛
输入: 包含两个不同(可选)值的2D数组。在解释规则时,我将使用0和1。输入格式当然是灵活的。 挑战: 零是水,一个是小岛。为了确保孤独,您的任务是通过插入零行和零列将所有岛屿用水包围。您不想浪费水,因此您必须减少添加的水量。如果有不止一种溶液需要添加相同量的水,则应添加水栏,而不是行。我将在测试案例中展示这一点。 输出: 新的修改后的2D数组。输出格式当然是灵活的。 测试用例: 输入和输出以短划线分隔。添加的零以粗体显示。如果要将测试用例转换为更方便的格式,请在此处使用答案之一。 1 --- 1 1 1 --- 1 0 1 1 1 1 1 --- 1 0 1 0 0 0 1 0 1 1 0 0 1 --- 1 0 0 0 0 1 请注意,我们添加了一列零,而不是一列零。这是因为必要的零的数目相等,因此应首选列。 1 0 0 0 1 0 1 …

7
在那里,我将其固定(用绳子固定)
相关:横向比较相似(但容易得多)的挑战:在那里(用胶带固定) 挑战: 给定仅包含大写和/或小写字母(以您喜欢的为准)和换行符的字符串,请rope垂直放置以对其进行修复。为此,我们检查字母表中两个相邻字母的差异(忽略环绕并且仅向下移动),并在需要的地方填充ROPE/ rope。 注意:此挑战与“ 我已解决(使用磁带)”挑战之间的另一个主要区别是,这次我们没有浪费rope我们的时间tape(在挑战的第一部分中,@ JonathanAllan建议)。 例: 输入: abc bcd ddd eex gfz hka imh 输出: abc bcd Rdd deE efR OPO gEP hRE iOR kO PP mE R O P E R O P E R O x P z a E R O P E R h …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.