Questions tagged «matrix»

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

16
罗马军盾
沙盒帖子(已删除) 古老的罗马军队在世界范围内非常有名。在这些阵型中,罗马军团以几何形状(通常是矩形)分组,使用盾牌保护侧翼及其上半部分。内部位置的军团士兵将上盾放置在头顶上方,侧面的军团士兵携带2个或多个盾牌:一个用于保护上半部分,一个或多个盾牌用于保护侧面(如果有人在角落里)他有3个盾牌,如果有人一个人有5个盾牌,是的,我知道一个人不可能带5个盾牌,但是他们以某种方式做到了。利用这一阵型,所有罗马军团保护自己,并成为当时最坚强的对手。 历史告诉我们,有一位罗马将军说,最好的编队形状是正方形(行和列的军团人数相同)。问题在于弄清楚他应该分裂多少个编队(和规模),以便: 不要将任何军团排除在编队之外(尽管他承认只有一个军团编队) 减少所需的防护罩数量 这位将军在做一些数学和计算后,得出完成这两个条件的最佳方法是从可能的最大平方开始,然后重复直到没有军团成员离开为止。 例: 如果他的军队中有35个军团, 一个5x5的军团正方形(这是可能的最大正方形)。 与其余军团一起(10) 3x3正方形 与其余军团一起(1) 1x1正方形。 最后,它看起来像这样: 5x5 * * * * * 3x3 * * * * * * * * 1x1 * * * * * * * * * * * * * * * * * * * * …
26 code-golf  matrix 

12
查找纵火犯的摇篮曲
想象一下一个纵火犯在城镇中走来走去,并按照一种非常特定的方式挑选受害者(或者,想象一下一只蜜蜂在花园里飞来飞去,并按照一种非常特定的方式挑选花朵进行花粉授粉)。假设城镇是一个N×N矩阵,其中N是大于或等于2的整数。纵火犯从左上角开始,依次将房屋M点设置在房屋前方(其中M是他们当前所在房屋的编号),同时按顺序更改每次火灾后房屋的移动方向东⟶南⟶西⟶北⟶东⟶南...依此类推。该摇篮曲纵火犯的价值是使他们离开城镇的M值(即,他们在停止憎恶之前所参观的最后一所房屋)。通过示例更容易理解。以以下矩阵为例: 3 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1 我们从左上角开始,所以M = 3(X标记纵火犯的当前位置和先前位置): X 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 …

30
正交对角台阶
在2D矩阵中导航是一个常见的问题。我们已经看过很多次了,以后还会再见。因此,让我们帮助未来,开发最短的解决方案,以在2D矩阵中生成所有八个可能的步骤。 挑战 您的代码必须以任何顺序输出以下8对-1,0,1: (0,1) (0,-1) (1,0) (-1,0) (1,1) (1,-1) (-1,1) (-1,-1) 规则 没有输入。 输出顺序不相关 输出灵活。对数字只需要区分即可 这是代码高尔夫球,因此最短答案以字节为单位

3
高尔夫免费午餐
在给定汇率表的情况下,找到最大获利的交易所序列。 例如,考虑货币的一个 riary(你的本国货币),乙 AHT,Ç EDI和d,其中从一个到另一个率(任何交易率已经征收后)由(行,列)在入门给出ENAR汇率表如下: TO A B C D A 0.9999 1.719828 4.509549 0.709929 F B 0.579942 0.9999 2.619738 0.409959 R O C 0.219978 0.379962 0.9999 0.149985 M D 1.39986 2.429757 6.409359 0.9999 显然,用A交换A并不是一个好主意,因为这张桌子会很乐意向您收取任何费用。 不太明显,但在此表中是正确的,将A交换为任何其他货币,然后再次交换回去会造成损失: via B: 1.719828 × 0.579942 = 0.997400489976 via C: 4.509549 × 0.219978 = 0.992001569922 …

29
旋转总和
以包含正整数的方阵为输入,并计算该矩阵的“旋转总和”。 轮换金额: 取原始矩阵与旋转90、180和270度的同一矩阵的总和。 假设矩阵为: 2 5 8 3 12 8 6 6 10 那么旋转后的总和将是: 2 5 8 8 8 10 10 6 6 6 3 2 3 12 8 + 5 12 6 + 8 12 3 + 6 12 5 = 6 6 10 2 3 6 8 5 …

22
这是一个很好的2048板吗?
这是我的第一个问题,因此在评论中提出的任何建议将不胜感激!谢谢 ;) 介绍 2048游戏的一种非常普遍的策略是从不失败。这会将所有大数字放在顶部,将较低的数字放在底部。因此,如果正确应用此策略,则您的开发板将始终符合以下模式: 要检查的模式/您的任务 如果董事会可以这样描述,则您的提交应为完整程序或返回真实值的函数:在董事会的每一列中,第一个数字应为该列的最高值,第二个数字应为较小的值等于或等于第一个数字,以此类推。好的2048板定义为最高编号都位于顶部的板。这是code-golf,所以每种语言的最短Code(以字节为单位)获胜。 输入输出 可以以任何适当的方式获取输入,例如4个数组的数组,每个数组包含4个数字,或者16个数组。总的来说,它将始终是16个数字,代表4x4板 。输出应为真实值,输入应为“ 2048良好板”,否则为假值。 例子 真相: |-------------------| | 16 | | 64 | 8 | |-------------------| | 8 | | 32 | 8 | |-------------------| | 4 | | 32 | 2 | |-------------------| | 2 | | | | |-------------------| |-------------------| | 16 …

30
具有大多数非零元素的行的索引
这很简单:将整数矩阵作为输入,并输出具有最多非零元素的行的索引。您可以假设只有一行具有最多非零的元素。 测试用例: 这些是1索引的,您可以选择是0还是1索引。 1 0 row = 1 --- 0 -1 0 0 row = 1 --- 1 1 0 0 0 0 0 5 0 0 2 3 0 0 0 0 5 6 2 2 row = 4 --- 0 4 1 0 0 0 -6 0 0 …
26 code-golf  matrix 

30
创建一个棋盘格矩阵
以一个正整数n作为输入,并输出一个由1和0组成的n × n棋盘矩阵。 左上角的数字应始终为1。 测试用例: n = 1 1 n = 2 1 0 0 1 n = 3 1 0 1 0 1 0 1 0 1 n = 4 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 输入和输出格式是可选的。接受将矩阵输出为列表列表。

10
符号矩阵乘法
有很多不同的方法来解释矩阵乘法。我会坚持一个数字,因为我相信这里的大多数人都熟悉它(这个数字非常具有描述性)。如果您需要更多详细信息,建议您访问Wikipedia文章或WolframMathWorld上的说明。 简单说明: 假设您有两个矩阵A和B,其中A是3×2,而B是2×3。如果对矩阵AB或BA进行矩阵乘法,将得到以下结果: 挑战: 用您的语言实现符号矩阵乘法。您将采用两个矩阵作为输入,其中矩阵中的每个元素都由一个非空白ASCII字符(代码点33-126)表示。您必须输出这些矩阵的乘积。 有关输出的规则: 两个条目的乘积之间不应有任何符号。这ab不a*b,a·b,times(a,b)或者类似的东西。这aa,不是a^2。 项的总和之间应有一个空格(ASCII码点32)。这a b不a+b,plus(a,b)或者类似的东西。 这两个规则的基本原理是:矩阵中所有非空白字符都可以用作符号,因此将它们用作数学符号会很麻烦。所以,你可以正常写成a*b+c*d会ab cd。 您可以选择条款的顺序。ab cd,dc ab并cd ba在数学上来说是相同的,所以你可以在这里选择的顺序了。只要在数学上正确,顺序就不必一致。 有关矩阵格式的规则: 矩阵可以以任何您喜欢的格式输入,除了在行之间没有定界符的单个字符串(这是因为输出将被完全弄乱)。两个矩阵必须以相同的格式输入。以下所有示例都是输入和输出矩阵的有效方法。 "ab;cd" <- This will look awful, but it's still accepted. "a,b\nc,d" [[a,b],[c,d]] [a, b] [c, d] 我知道这允许许多看起来很杂乱的格式,但是挑战在于要乘以矩阵而不是格式化输出。 一般规则: 您可以假设输入有效。在给定尺寸下,矩阵乘法始终是可能的。 只有两个矩阵。 您可以假设矩阵是非空的 接受内置函数(但由于格式要求,可能有点麻烦)。 当然,如果需要,您当然可以在输入中使用转义符(\'而不是')。 任何标准的输入和输出方法都可以。 测试用例: 所示的两个输入矩阵之间有一条空线。输出显示在之后Output:。当有两个输出矩阵时,这只是显示其他可以接受的输出。 测试用例#1 Inputs: [a] [b] Output: [ab] [ba] …

9
尽快计算永久物
面临的挑战是编写最快的代码来计算矩阵的永久性。 n-by- nMatrix A=(ai,j)的永久变量定义为 在此S_n表示的所有排列的集合[1, n]。 作为一个例子(来自维基): 在这个问题中,矩阵都是正方形的,只有值-1和1在其中。 例子 输入: [[ 1 -1 -1 1] [-1 -1 -1 1] [-1 1 -1 1] [ 1 -1 -1 1]] 常驻: -4 输入: [[-1 -1 -1 -1] [-1 1 -1 -1] [ 1 -1 -1 -1] [ 1 -1 1 -1]] 常驻: …

11
这是Pascal的矩阵吗?
在帕斯卡三角形中,每个数字是其正上方两个数字的和,将空点视为零: 通过旋转三角形,我们可以切出大小和旋转不同的正方形矩阵,我将其称为Pascal矩阵。请注意,这些矩阵始终需要包含前1个1个1。这里有些例子: 1 1 1 1 1 2 3 4 1 3 6 10 1 4 10 20 6 3 1 3 2 1 1 1 1 1 5 15 35 70 1 4 10 20 35 1 3 6 10 15 1 2 3 4 5 1 1 1 …

8
爆炸数字
沙盒(已删除) 让我们将9s的矩阵定义为: ñ= ⎡⎣⎢999999999⎤⎦⎥ñ=[999999999] N = \begin{bmatrix} 9&9&9\\9&9&9\\9&9&9 \end{bmatrix} 让我们将爆炸数字定义为位置处的数字,该数字可以分解为所有相邻邻居(包括自身)之间的相等整数,并且每个部分的绝对值都大于0。(x ,y)(X,ÿ)(x,y) 从上一个矩阵开始,让位置处的数字爆炸(索引为0) (1 ,1 )(1个,1个)(1,1)ñ= ⎡⎣⎢999999999⎤⎦⎥ñ=[999999999] N = \begin{bmatrix} 9&9&9\\9&\color{red}9&9\\9&9&9 \end{bmatrix} ñ= ⎡⎣⎢9 + 19 + 19 + 19 + 10 + 19 + 19 + 19 + 19 + 1⎤⎦⎥ñ=[9+1个9+1个9+1个9+1个0+1个9+1个9+1个9+1个9+1个] N = \begin{bmatrix} 9+\color{red}1&9+\color{red}1&9+\color{red}1\\9+\color{red}1&\color{blue}0+\color{red}1&9+\color{red}1\\9+\color{red}1&9+\color{red}1&9+\color{red}1 \end{bmatrix} ñ= ⎡⎣⎢101010101个10101010⎤⎦⎥ñ=[101010101个10101010] N = …
25 code-golf  matrix 

12
绘制轮廓
给定高程的矩形矩阵,绘制其轮廓。 任务 如果,则两个元素x和y处于同一轮廓线级别floor(x/10) == floor(y/10)。例如,52和58处于相同的轮廓级别,但是58和64不在同一轮廓级别。 绘制轮廓的行为定义如下:对于每个元素e,将其替换为如下选择的两个字符的字符串: 第一个字符是" "下面的元素是否与下面的元素处于e相同的轮廓线级别,e或者下面没有任何元素e,"_"否则 第二个字符是," "如果右边的元素与该元素e处于相同的轮廓线级别,e或者右边没有元素e,"|"否则 将行中的元素连接在一起,然后用换行符将这些行连接在一起。 例 假设输入为[[5,20],[3,6]],可视为 5 20 3 6 我们先来看一下5。由于3处于与相同的轮廓水平5,因此第一个字符为" "。由于20与的轮廓级别不同5,因此第二个字符是"|"。 现在我们来看20。由于6轮廓线级别与相同20,因此第一个字符为"_"。由于的右边没有元素20,因此第二个字符是" "。 现在我们来看3。由于下面没有元素3,因此第一个字符为" "。由于6与处于相同的轮廓水平3,第二个字符是" "。 现在我们来看6。由于下面没有元素6,因此第一个字符为" "。由于的右边没有元素6,因此第二个字符是" "。 基于这些两个字符的字符串,我们进行替换以获得[[" |","_ "],[" "," "]]。将这些结合在一起,我们得到的输出 |_ 规则 输入矩阵将始终为矩形,并由正整数组成。 尾随空格或换行符可以为任意数量(包括0),并且不必以任何方式保持一致。 只要产生相同的结果,就不必遵循相同的算法。 您的程序或函数可能会输出以换行符分隔的字符串,字符串列表或等效字符串。 这是代码高尔夫球,因此以字节为单位的最短代码获胜。 测试用例 input output [[1,5,8,9],[3,11,13,8],[7,14,10,9],[4,8,7,6]] _ _ | | |_ _| [[0,10,20,30,40,50,60,70,80,90],[0,0,10,10,20,20,30,30,40,40],[0,0,0,10,10,10,20,20,20,30],[0,0,0,0,10,10,10,10,20,20],[0,0,0,0,0,10,10,10,10,10],[0,0,0,0,0,0,10,10,10,10],[0,0,0,0,0,0,0,10,10,10],[0,0,0,0,0,0,0,0,10,10],[0,0,0,0,0,0,0,0,0,10],[0,0,0,0,0,0,0,0,0,0]] …

4
隔行旋转
挑战 给定一个字符正方形矩阵(可单字节打印的ASCII字符),请沿相反方向旋转矩阵的每个“环”。 让我们举个例子: 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P 然后,将最外面的环顺时针旋转90度,如下所示: 1 2 3 4 5 L G B 6 1 6 A M 2 B F => N 3 G K …
25 code-golf  matrix 

17
范德蒙行列式
给定一个n值向量,(x1,x2,x3,...,xn)返回相应范德蒙德矩阵的行列式。 该行列式可以写为: 细节 您的程序/函数必须接受允许可变长度的任何方便格式的浮点数列表,并输出指定的行列式。 您可以假设输入和输出都在您的语言支持的值的范围内。如果您的语言不支持浮点数,则可以采用整数。 一些测试案例 请注意,每当有两个相等的条目时,行列式将为0相应的Vandermonde矩阵中有两个相等的行。感谢@randomra指出了这个丢失的测试用例。 [1,2,2,3] 0 [-13513] 1 [1,2] 1 [2,1] -1 [1,2,3] 2 [3,2,1] -2 [1,2,3,4] 12 [1,2,3,4,5] 288 [1,2,4] 6 [1,2,4,8] 1008 [1,2,4,8,16] 20321280 [0, .1, .2,...,1] 6.6586e-028 [1, .5, .25, .125] 0.00384521 [.25, .5, 1, 2, 4] 19.3798828

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.