Questions tagged «math»

挑战涉及数学。还可以考虑使用更具体的标签:[数字] [数字理论] [算术] [组合] [图形理论] [几何] [抽象代数]。

7
构造雅可比矩阵
取未知向量,并应用一些通用的微分函数。的雅可比然后通过矩阵给出,使得: 例如,假设m=3和n=2。然后(使用基于0的索引) 雅可比f然后 这个挑战的目标是打印这个雅可比矩阵。 输入值 你的程序/功能应该采取作为输入两个正整数m和n,其代表的部件的数目f和u分别。输入可以来自任何所需的来源(stdio,功能参数等)。您可以指定接收顺序,对于输入的答案必须一致(请在答案中指定)。 输出量 代表雅可比矩阵的东西。此表示形式必须明确拼出Jacobian矩阵的所有元素,但是每个术语的确切形式都是实现定义的,只要明确区分什么以及关于什么进行区分,并且每个条目均以逻辑顺序输出。用于表示矩阵的示例可接受形式: 列表列表,其中外部列表​​的每个条目都对应于雅可比行的一行,内部列表的每个条目都对应于雅可比行的列。 字符串或文本输出,其中每行是Jacobian行,每行中由定界符分隔的条目对应于jacobian的列。 矩阵的一些图形/视觉表示。示例:使用MatrixForm命令时Mathematica显示的内容 其他每个条目都已存储在内存中并且可以查询的密集矩阵对象(即,您不能使用生成器对象)。例如,Mathematica如何在内部表示Matrix对象 条目格式示例: 形式为的字符串d f_i/d u_j,其中i和j是整数。例如:d f_1/d u_2。请注意,d和f_1或之间的这些空格x_2是可选的。此外,下划线也是可选的。 形式为d f_i(u_1,...,u_n)/d u_j或的字符串d f_i(u)/d u_j。也就是说,功能组件的输入参数f_i是可选的,并且可以明确地拼写出来或以紧凑形式保留。 格式化的图形输出。例如:计算表达式时Mathematica会打印什么D[f_1[u_,u_2,...,u_n],u_1] 您可以选择起始索引u和目标索引f(请在答案中指定)。输出可以是任何所需的接收器(stdio,返回值,输出参数等)。 测试用例 以下测试用例使用约定m,n。索引显示为从0开始。 1,1 [[d f0/d u0]] 2,1 [[d f0/d u0], [d f1/d u0]] 2 2 [[d f0/d u0, d f0/d u1], [d f1/d u0, d …

6
二进制重复序列
二进制重复序列是具有以下形式的递归定义的序列: 这是斐波那契(x = 1, y = 2, a = [1, 1], alpha = 1, beta = 1)序列和卢卡斯(x = 1, y = 2, a = [2, 1], alpha = 1, beta = 1)序列的概括。 挑战 给定n,x,y,a,alpha,和beta,在任何合理的格式,输出n对应的二进制递归序列的第术语。 规则 您可以选择序列是1索引还是0索引,但是您的选择必须在所有输入中保持一致,并且必须在答案中记下您的选择。 您可能会假设不会给出任何无效输入(例如在之前终止n的序列或引用未定义术语(例如F(-1)或F(k)where k > n)的序列)。由于这一结果,x并y会一直是积极的。 输入和输出将始终是整数,在语言的自然整数类型的范围内。如果您的语言具有无界整数,则输入和输出将在该范围内[2**31, 2**31-1](即32位带符号二进制补码整数的范围)。 a将始终精确地包含y值(按照定义)。 测试用例 注意:所有测试用例均以0索引编制。 x = 1, y = …

2
证明数字是代数的
受此答案启发(重点是我的): 我们将玩游戏。假设您有一些数字x。您可以从x开始,然后可以加,减,乘或除以除零以外的任何整数。您还可以乘以x。您可以根据需要多次执行这些操作。如果总数变为零,则您赢了。 例如,假设x为2/3。乘以3,然后减去2。结果为零。你赢了! 假设x为7 ^(1/3)。乘以x,然后再乘以x,然后减7。您赢了! 假设x为√2+√3。在这里,要赢得胜利并不容易。但是事实证明,如果您乘以x,然后减去10,再乘以x两次,再加上1,那么您就赢了。(这似乎并不明显;您可以使用计算器进行尝试。) 但是,如果您从x =π 开始,您将无法获胜。如果您对整数进行加,减,乘或除,或与π相乘,则无论采取多少步,都无法从π变为0。(这也不应该很明显。这是非常棘手的事情!) 像√2+√3这样的数字可以被赢得,称为代数。像π这样无法赢得的数字称为先验数字。 为什么这很有趣?每个代数数字都与整数算术相关,游戏中的获胜手法向您展示了如何做到这一点。到达零的路径可能很长且很复杂,但是每个步骤都很简单,并且有一条路径。但是,先验数在本质上是不同的:通过简单的步骤,它们与整数没有算术关系。 本质上,您将使用上面引用的问题中使用的步骤为给定的输入“赢得”游戏。 给定一个实数代数常量x,请使用以下允许的运算将数字转换为零: 加或减整数。 用非零整数乘或除。 乘以原始常数x。 输入是一个字符串,其中可以包含整数,加法,减法,乘法,除法,乘幂(您对**或的选择^,指数用于表示根)和括号。输入中的空格是可选的,但输出中的空格则是可选的。您应该输出获得零结果所需的步骤,因此乘以7一个步骤将输出为*7。允许尾随空格和/或换行符。 例子 0 -> +0 (or any other valid, or empty) 5/7 + 42 -> -42 *7 -5 (or shorter: *7 -299) 2^(1/3) -> *x *x -2 5*(3**(1/4)) -> *x *x *x -1875 2^(1/2)+3^(1/2) …
10 code-golf  math 

13
对角线点积
这个挑战非常简单。您将得到一个以任何理性方式表示的方阵作为输入,并且您必须输出该矩阵对角线的点积。 具体而言,对角线是从左上角到右下角以及从右上角到左下角的对角线。 测试用例 [[-1, 1], [-2, 1]] -> -3 [[824, -65], [-814, -741]] -> 549614 [[-1, -8, 4], [4, 0, -5], [-3, 5, 2]] -> -10 [[0, -1, 0], [1, 0, 2], [1, 0, 1]] -> 1

25
计算相对论速度
在狭义相对论中,移动物体相对于另一个在相反方向移动的物体的速度由以下公式给出: s = v + u1 + v u / c2。s=v+ü1个+vü/C2。\begin{align}s = \frac{v+u}{1+vu/c^2}.\end{align} s = ( v + u ) / ( 1 + v * u / c ^ 2) 在这个公式中,和是物体速度的大小,是光速(大约是,对此非常接近挑战)。vvvüüuCCc3.0 × 108米/ 秒3.0×108米/s3.0 \times 10^8 \,\mathrm m/\mathrm s 例如,如果一个对象在移动v = 50,000 m/s,而另一个对象在移动u = 60,000 m/s,则每个对象相对于另一个的速度大约为s = 110,000 m/s。这就是您在伽利略相对论(速度简单地相加)下所期望的。但是,如果v …

16
打印Thue-Morse序列中的差异
请注意,当我说“求反”时,我的意思是将所有的都替换为零(即按位求反) Thue-Morse序列类似于01101001 生成它的方式是: 首先从0开始。取反剩余的值并将其追加到末尾。 所以,拿0。取反并将其添加到末尾-01 然后将其取反并将其添加到末尾- 0110 等等。 另一个有趣的特性是零之间的距离会创建一个“不合理的”且不重复的字符串。 所以: 0110100110010110 |__|_||__||_|__| 2 1 0 2 01 2 <------------Print this! 您能编写一个程序,当输入n时,将输出要打印的字符串的前n位数字吗? 这是代码高尔夫,所以最短的字节数获胜!

4
凸包中的点(2D)
背景 有限数量点的凸包是包含所有点的最小凸多边形,无论是顶点还是内部。有关更多信息,请参见有关PGM的问题,该问题定义得很好。 输入值 N+1N >= 3通过STDIN以下格式的2-D坐标()(也允许其他常见的高尔夫输入)(小数位数可以变化,但是您可以假定它保持“合理”,并且每个数字都可以表示为浮点数): 0.00;0.00000 1;0.00 0.000;1.0000 -1.00;1.000000 输出量 STDOUT如果列表中的第一个点((0.00;0.00000)在上面的示例中)位于其他N个点的凸包中,则打印到(或等效)真值(否则为等价)。 这是代码高尔夫球,因此以字节为单位的最短解决方案为准。 边界案例:如果该点位于凸包的边界上(例如,在壳的外部边界的一侧或顶点上),则可以返回任何值(但不会崩溃),因为该概率为零事件(以任何合理的概率)。 禁止使用:仅用于解决几何问题的任何内容(语言,运算符,数据结构,内置或包)(例如Mathematica的ConvexHull)。允许使用通用数学工具(矢量,矩阵,复数等)。 测验 应该返回TRUE:spiralTest1-TRUE,squareTest1-TRUE 应该返回FALSE:spiralTest2-FALSE,squareTest2-FALSE

8
四舍五入之前需要加1的小数位数是多少?
当四舍五入一个数字时,如果下一位数字是>= 5您加1。例如: 3.1415926535 rounded to 1dp is 3.1 3.1415926535 rounded to 4dp is 3.1416 <-- Note the 5 changed to 6 3.1415926535 rounded to 5dp is 3.14159 3.1415926535 rounded to 9dp is 3.141592654 <-- Note the 3 changed to 4 您面临的挑战是接收一个整数作为输入并输出小数位数,然后在该位数之前四舍五入该数字的平方根-即出现的数字位数之前的小数位数>= 5。 整数将在0到100,000之间(含0和100,000),因此对于59752的边缘情况,您需要支持17个小数点(以检查第17位)。 如果您的编程语言无法更改小数点位数,则可以显示“?” 给用户的信息。 例: Input Root Output 5 …
10 code-golf  math 

4
重排不等式
背景 该排序不等式是基于重排数的不平等。如果我有两个长度相同的数字列表,则x 0,x 1,x 2 ... x n-1和y 0,y 1,y 2 ... y n-1相同长度,其中I允许重新排列列表中的数字,最大化和x 0 y 0 + x 1 y 1 + x 2 y 2 + ... + x n-1 y n-1的一种方法是对2个列表进行排序非递减顺序。 在此处阅读Wikipedia文章。 任务 您将编写一个从STDIN接受输入的程序,或者接受2个数字(长度相同)的数组(或相关容器)的函数。 假设您编写了一个接受两个数组(a和b)的函数,您将找到重新排列第二个数组(b)中的数字以最大化的方法: a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+...+a[n-1]*b[n-1] 在这种情况下,如果阵列b为[1 0,2 1,2 2,3 3,3 4 ](指数为清楚起见), [1 0,2 1,2 2,3 …

11
“我”有“我”发生的机会
设计一个随机数生成器,其中第i个数字对于所有0 <i <14都有i%的出现几率。0应该恰好有9%的出现几率。生成器的种子应该是系统时间。您不能将预定义函数用于随机数生成。 基本上1发生的机率是1%,2发生的机率是2%,依此类推,直到13发生的机率是13%。这是代码高尔夫球,因此最短的代码获胜。

7
Base85编码
挑战 编写一个程序,该程序可以接受包含任何ASCII可打印字符的单行字符串的输入,并输出以Base85编码的相同字符串(使用big-endian约定)。您可以假设输入将始终≤100个字符。 Base85指南 四个八位位组被编码为(通常)五个Base85字符。 Base85字符的范围从!到u(ASCII 33-117 )和z(ASCII 122)。 要进行编码,您需要对四个八位位组(一个32位数字)连续执行除以85的操作,然后将余数加33(每次除法后)以获得编码值的ASCII字符。例如,此过程的第一个应用程序在编码的块中产生最右边的字符。 如果一组四个八位位组仅包含空字节,则将它们编码为,z而不是!!!!!。 如果最后一个块短于四个字节,则将其填充为空字节。编码后,将从输出末尾删除与填充相同数量的字符。 编码的值应在之前<~和之后~>。 编码值不应包含空格(针对此挑战)。 例子 In: easy Out: <~ARTY*~> In: test Out: <~FCfN8~> In: code golf Out: <~@rGmh+D5V/Ac~> In: Programming Puzzles Out: <~:i^JeEa`g%Bl7Q+:j%)1Ch7Y~> 以下代码段将编码给定输入到Base85。 显示代码段 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script>String.prototype.toAscii85=function(){if(""==this)return"<~~>";for(var r=[],t=0;t<this.length;t+=4){for(var i=(this.substr(t,4)+"\x00\x00\x00").substr(0,4),o=0,n=0;4>n;n++)o=256*o+i.charCodeAt(n);var s=[];for(n=0;5>n;n++){var e=o%85;o=(o-e)/85,s.unshift(String.fromCharCode(e+33))}r=r.concat(s)}var a=4-this.length%4;return 4!=a&&r.splice(-a,a),"<~"+r.join("").replace(/!!!!!/g,"z")+"~>"};</script><style>#in,#out{margin:20px;width:400px;resize:none}</style><input id="in" type="text" value="Base85"><button onclick="$('#out').text($('#in').val().toAscii85())">Submit</button><br><textarea id="out" rows=5 disabled></textarea> Run …

26
N个最接近零的数字保持平衡
目标:给定一个正整数n: 如果n是奇数,输出列表中n最接近的数字来0递增的顺序 如果n是偶数,则输出Falsey值。 测试用例: 5 -> [-2,-1,0,1,2] 4 -> false (or any Falsey value) 1 -> [0] 参考实施 function update(){ var num = +document.getElementById("yield").value; if(num){ var out = document.getElementById("output"); if(num % 2 == 1){ // base is balanced var baseArr = []; for(var i=0;i<num;i++){ baseArr.push(i-Math.floor(num/2)); } out.innerHTML = baseArr.join(" "); …

3
Knödel数字-查找Kn
克诺德尔数 克诺德尔数是一组序列。具体而言,马铃薯丸子号码的正整数n是该组合数m,使得所有i < m,互质到m,满足i^(m-n) = 1 (mod m)。n表示特定的Knödel数集Kn。(维基百科)。 例如,K1是Carmichael编号和OEIS A002997。他们去,如:{561, 1105, 1729, 2465, 2821, 6601, ... }。K2是OEIS A050990,就像这样{4, 6, 8, 10, 12, 14, 22, 24, 26, ... }。 你的任务 您的任务是编写程序/函数/等。需要两个数字,n和p。它应该返回pKnödel序列的第一个数字Kn。 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 例子 1, 6 -> [561, 1105, 1729, 2465, 2821, 6601] 2, 3 -> [4, 6, 8] 4, 9 -> …

2
概率-您能走多高?
我之前曾问过一个问题,该如何快速准确地计算概率。但是,显然,提供封闭式解决方案太容易了!这是一个更困难的版本。 这项任务是关于编写代码以准确,快速地计算概率。输出应该是精确的概率,以最简化的形式写为分数。那是它永远不应该输出4/8,而应该输出1/2。 对于某个正整数n,请考虑一个长度为1s和-1s的均匀随机字符串,n并将其称为A。现在连接到A其自身的副本。那就是A[1] = A[n+1]从1开始索引,A[2] = A[n+2]依此类推。 A现在有长度2n。现在还考虑长度的第二随机串n,其第一n值是-1,0或1的概率是1 / 4,1 / 2,1/4每并调用它B. 现在考虑不同的Bwith 的内积。A[1+j,...,n+j]j =0,1,2,... 例如,考虑n=3。对于可能的值A,并B可能会A = [-1,1,1,-1,...]和B=[0,1,-1]。在这种情况下,前两个内积是0和2。 任务 对于每个j,从j=1您的代码开始,您的代码应该输出每个第一个j+1内积为零的概率n=j,...,50。 复制MartinBüttner生成的表,j=1我们得到以下示例结果。 n P(n) 1 1/2 2 3/8 3 7/32 4 89/512 5 269/2048 6 903/8192 7 3035/32768 8 169801/2097152 得分了 您的分数是j我的计算机在1分钟内完成的最大代码。为了澄清一点,每一个j都花一分钟。请注意,上一个链接的问题中的动态编程代码将很容易做到这一点j=1。 抢领带 如果两个条目获得相同的j分数,则获胜的条目将是n我机器上一分钟内得分最高的条目j。如果两个最佳作品在此标准上也相等,那么获胜者将是第一个提交的答案。 语言和图书馆 您可以使用任何喜欢的免费语言和库。我必须能够运行您的代码,因此请尽可能提供有关如何在Linux中运行/编译代码的完整说明。 我的机器时间将在我的机器上运行。这是在AMD FX-8350八核处理器上的标准ubuntu安装。这也意味着我需要能够运行您的代码。 获奖作品 j=2在Mitch Schwartz的Python中。 …

5
准确快速地计算概率
[这是一个精确计算概率的伙伴问题] 这项任务是关于编写代码以准确,快速地计算概率。输出应该是精确的概率,以最简化的形式写为分数。那是它永远不应该输出4/8,而应该1/2。 对于某个正整数n,请考虑一个长度为1s和-1s的均匀随机字符串,n并将其称为A。现在将A其串联为第一个值。就是说A[1] = A[n+1]从1 A开始的索引 现在具有length n+1。现在还考虑长度的第二随机串n,其第一n值是-1,0或1的概率是1 / 4,1 / 2,1/4每并调用它B. 现在考虑的内积A[1,...,n]和B和的内积A[2,...,n+1]和B。 例如,考虑n=3。对于可能的值A,并B可能会A = [-1,1,1,-1]和B=[0,1,-1]。在这种情况下,两个内积是0和2。 您的代码必须输出两个内积均为零的概率。 复制MartinBüttner制作的表,我们得到以下示例结果。 n P(n) 1 1/2 2 3/8 3 7/32 4 89/512 5 269/2048 6 903/8192 7 3035/32768 8 169801/2097152 语言和图书馆 您可以使用任何喜欢的免费语言和库。我必须能够运行您的代码,因此请尽可能提供有关如何在Linux中运行/编译代码的完整说明。 任务 您的代码必须以开头,n=1并在单独的一行上为每个递增的n提供正确的输出。10秒后应停止。 比分 分数只是在n计算机上运行10秒后代码停止之前达到的最高分数。如果平局,获胜者将是最快获得最高分的人。 条目表 n = 64在Python中。Mitch Schwartz的第1版 n = 106在Python中。版本Mitch …

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.