Questions tagged «math»

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

2
找到多边形的面积
给定s1, s2, s3... s_n圆内接的n角的连续边长,请找到其面积。您可以假设该多边形存在。另外,多边形将是凸的并且不会自相交,这足以保证唯一性。禁止专门解决此挑战的内置函数以及用于计算外接圆或外接中心的内置函数(这与该挑战的先前版本不同)。 输入:循环多边形的边长;可以作为函数,stdin等的参数。 输出:多边形的面积。 答案应精确到小数点后六位,并且必须在合理的笔记本电脑上运行20秒。 这是代码高尔夫球,所以最短的代码获胜! 具体测试案例: [3, 4, 5] --> 6 [3, 4, 6] --> 5.332682251925386 [3, 4, 6, 7] --> 22.44994432064365 [5, 5, 5, 5] --> 25 [6, 6, 6, 6, 6] --> 61.93718642120281 [6.974973020933265, 2.2393294197257387, 5.158285083300981, 1.4845682771595603, 3.5957940796134173] --> 21.958390804292847 [7.353566082457831, 12.271766915518073, 8.453884922273897, 9.879017670784675, 9.493366404245332, …

10
求矩阵幂
问题 创建一个程序或函数,该程序或函数可以计算加到n 次方的矩阵的结果。您的代码将采用一个任意的方矩阵A和一个非负整数n,并返回一个值为A n的矩阵。 限制条件 不允许使用用于计算矩阵幂和矩阵乘积的内置函数。 适用于代码高尔夫球的其余标准规则。 说明 给定一个方阵A,A n的值= AA⋯A(A与自身的重复矩阵乘积,n倍)。如果n为正,则使用刚才提到的标准。当n为零时,将得出具有相同A阶的单位矩阵。 目标 这是代码高尔夫球,最短的代码获胜。 测试用例 在这里,A是输入矩阵,n是输入整数,r是输出矩阵,其中r = A n。 n = 0 A = 62 72 10 34 r = 1 0 0 1 n = 1 A = 23 61 47 81 11 60 42 9 0 r = 23 …

2
打我一些电话
出租车编号或OEIS A011541是对于连续n个能够表示为两个正立方整数的n个不同总和的最小数字。 您需要打印出第n个出租车编号。理论上,这应该适用于任何n。 但是,由于到目前为止只发现了6个出租车号码,所以n不会超过6 2, 1729, 87539319, 6963472309248, 48988659276962496, 24153319581254312065344。 您不可以对这些变量进行硬编码,因为理论上您的程序必须适用于任意n。

3
对秸秆民意测验造成最大破坏
语境 Straw Poll是一个用于创建简单/非正式民意测验的网站。带有选项列表,用户可以选择他们的选项,并计票。稻草投票有两个非常重要的功能: 投票前可以查看当前结果 通常可以选择多个选项,就像您多次投票一样,每个选项一个。 比进行Straw Polls更有趣的一件事是弄乱结果。干扰有两种主要类型: 简单破坏,您可以对所有选项进行投票 高级中断,您可以从中战略性地选择要投票的选项,以最大程度地发挥效果。 在这个挑战中,您将编写一个高级中断程序。 数学 简单地说,可以说选票的熵值越高,民意测验的干扰就越大。 这意味着一个选项拥有所有票数的民意测验根本不会受到干扰,而每个选项具有相等票数的民意测验将被最大程度地破坏(这是最终目标)。 数字列表的熵[x1, x2, ..., xn]由维基百科的以下方程式给出。P(xi)是的概率xi,即xi / total_num_of_votes。如果到目前为止,一个选项的票数为零,那么它就不会包括在总和中(以避免log(0))。对我们而言,对数可以是您选择的任意基数。 举例[3,2,1,1]来说1.277,使用底数e的熵约为。 下一步是确定哪种投票模式会导致熵的最大增加。我可以为选项的任何子集投票,例如,我的投票可以是[1,0,1,0]。如果这些是我的选票,那么最后的计数是[4,2,2,1]。重新计算熵可得出1.273,熵降低,这意味着这是一次可怕的破坏尝试。以下是一些其他选项: don't vote [3,2,1,1] -> 1.277 vote for everything [4,3,2,2] -> 1.342 vote for the 1s [3,2,2,2] -> 1.369 vote for the 2 and 1s [3,3,2,2] -> 1.366 由此可以得出结论,最优投票模式是[0,0,1,1]因为它可以最大程度地增加熵。 输入项 …
9 code-golf  math 

6
计算克罗内克符号
这里和这里的相关链接,但是这里是简短的版本: 您有两个整数的输入,a且b介于负无穷大和无穷大之间(尽管如有必要,我可以限制范围,但函数仍必须接受负无穷大)。 Kronecker符号的定义 您必须返回Kronecker符号(a|b)进行输入,a并且b在哪里 (a|b) = (a|p_1)^e_1 * (a|p_2)^e_2 * ... * (a|p_n)^e_n 在那里b = p_1^e_1 * p_2^e_2 * ... * p_n^e_n,并p_i与e_i在的因式分解素数和指数b。 对于奇素数p,(a|p)=a^((p-1)/2) (mod p)定义在这里。 对于b == 2,(n|2)={0 for n even; 1 for n odd, n=+/-1 (mod 8); -1 for n odd, n=+/-3 (mod 8) 对于b == -1,(n|-1)={-1 for n<0; …

9
爱情测试员代码高尔夫
创建一个程序,该程序计算两个名称公用的字母总数,并查找其长度的乘积,以充当“爱情测试仪”。 条件:您可能不会得到1:1答案(3之3,等等)输出。 输入项 来自STDIN的两个名称或最接近的替代名称。 输出量 计算x为两个名称之间共有的字母总数,忽略大小写。计算y为名称长度的乘积。然后,输出到STDOUT或最接近的替代品 Name1 and Name2 have x out of y chances of love. 例子 输入: Wesley Polly 输出: Wesley and Polly have 2 out of 30 chances of love. Wesley和Polly有两个共同的字母,y和l,其长度的乘积为6 * 5 = 30。 输入: Bill Jill 输出: Bill and Jill have 3 out of 16 …

11
查找具有特定LCM和GCD的数字对
我当时正在和我的一个朋友一起处理数学问题,我们决定编写一个找到答案的脚本。原始问题如下: 两个自然数的差是2010,而它们的最大公分母是其最小公倍数的2014倍。找到所有可能的解决方案。 我们开始彼此独立地编写程序,当它起作用时,我们决定对其进行优化,以使我们可以管理的字节数最少。我们最终以了惊人的89个字节完成了这段漂亮的代码。 from fractions import*;print[i for i in range(10**6)if i*(i+2010)/gcd(i,i+2010)**2==2014] 我们想看看是否有人能编写较短的代码,该代码枚举了前100万个i。如果您足够勇于竞争,则可以使用任何喜欢的语言,但是我们希望Python 2能够将您的代码与我们的代码进行比较。 通常规则适用,最短字节获胜。适用标准代码的高尔夫球漏洞。标准的“漏洞”不再有趣 玩得开心!
9 code-golf  math 

3
打印序列的交集
顺序 您将得到第四位序列号1通过4。 OEIS0当自然数以二进制列出时,的位置。这是有关如何计算序列的示例: 0,1,10,11,100,101,110,111 ^ ^ ^^ ^ ^ 0 3 78 10 14 序列的开始是这样的: 0, 3, 7, 8, 10, 14, 19, 20, 21, 23, 24, 27, 29, 31, 36, 37, 40, 45, 51, ... OEIS此序列包括第一个自然数,跳过后两个,然后包括后三个,然后跳过后四个,然后继续。 0, 3, 4, 5, 10, 11, 12, 13, 14, 21, 22, 23, 24, 25, …

3
计算一个立方体可以切成多少个立方体
想象一些立方体,我们可以将其切成较小的立方体,而没有剩余的碎片。 查找一个立方体可以切割多少个立方体。 例如,一个立方体可以切成8个,27个(显然是整数的3阶次幂)和20个(19个小立方体加一个其他立方体大小的八分之一,见图)。 在这里看到一些帮助:http : //mathworld.wolfram.com/CubeDissection.html 程序应将整数n(0 <= n <= 1 000)作为输入,并打印所有小于或等于的数字,n以便可以将一个立方体切成该数目的立方体。假设可以将多维数据集切成1个多维数据集,而不能切成0个多维数据集。 您只能使用大小不超过64位的整数数据类型(无数组,对象等)。最短的代码胜出。

6
排列编号
挑战 对于给定的n个整数集,编写一个程序,该程序将输出其字典索引。 规则 输入只能是由空格分隔的一组唯一的非负整数。 您应该输出排列的字典索引(范围从0到n!-1)。 不能使用置换库或内置置换。 您可能不会生成输入的排列集或排列的任何子集来帮助您找到索引。 您也不能将给定的排列递增或递减到下一个/上一个(按字典顺序)排列。 如果您找到某种无需使用阶乘就可以完成的奖励积分(-10字节)。 对于n = 100,运行时间应少于1分钟 字节数最短的代码获胜 优胜者选择星期二(2014年7月22日) 有关排列的更多信息 http://www.monkeyphysics.com/articles/read/26/numbering_permutations.html 排列组运算 http://lin-ear-th-inking.blogspot.com/2012/11/enumerating-permutations-using.html 例子 0 1 2 --> 0 0 2 1 --> 1 1 0 2 --> 2 1 2 0 --> 3 2 0 1 --> 4 2 1 0 --> 5 0 …

24
生成Z_n的组表
组是数学中广泛使用的结构,并且在计算机科学中具有应用。此代码挑战涉及为累加组Z n创建组表的最少字符数。 表格的构造方式:对于Z n,元素为{0,1,2,...,n-1}。该表将具有n行和n列。对于表的第ij个条目,该值为i + j mod n。例如,在Z 3中,第1-2个条目(如果将起始行/列计算为1,则为第2行,第3列)为(1 + 2)%3 = 0(请参见示例输出)。 输入:一个正整数,n 输出:一个表,它是Z n的文本表示形式,如上所述构造,并在示例输出中显示如下。空格是可选的 输入样例: 3 样本输出: 0 1 2 1 2 0 2 0 1 输入样例: 5 样本输出: 0 1 2 3 4 1 2 3 4 0 2 3 4 0 1 3 4 0 1 …

16
编写一个数学函数,其结果为“ hello world”。
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 4年前关闭。 编写数学函数,得出“ hello world”的整数表示 例如,以十六进制表示的“ hello world”就是68656c6c6f20776f726c64这样的目标,那就是编写一个数学程序,生成一个表示“ hello world”的数字。 这是使用python的可能解决方案的示例: print(2*2*3*59*61*97*416510539*72330832279)==int("68656c6c6f20776f726c64", 16) 可以使用任何类型的数学方程式,例如:幂,阶数,阶乘和其他数学运算。 规则: 您可以选择自己的方式将“ hello world”编码/表示为整数。还允许使用哈希函数 允许使用数学库(例如numpy,GMP)。 目的是专注于数学部分

1
优化矩阵链乘法
挑战在于为几个矩阵的乘积计算最有效的乘法顺序。 矩阵的大小在标准输入的一行中指定。您应该在标准输出中打印一个整数列表,该整数列表指示进行乘法的顺序以最大程度地减少总乘法成本。 例子1 输入 5x6 6x12 12x100 100x7 输出 3 2 1 输入行将是用空格分隔的矩阵大小列表,每个矩阵大小是行数,后跟一个x,然后是列数。例如,有4个矩阵相乘在一起(所以总共有3个相乘),并且由于矩阵相乘是关联的,因此它们可以按任何顺序进行。 输出应该是执行乘法以最小化总成本的顺序。这应该是一个用空格分隔的整数列表,这些整数表示下一步要执行的乘法的索引。对于N个矩阵,此列表应包含数字1到N-1(含)。例如,输出1 3 2 1意味着您应该先进行12x100 * 100x7乘法运算,然后进行6x12 * 12x7乘法运算(第二个矩阵乘以上一步的结果),最后进行5x6 * 6x7乘法运算。 矩阵乘法将始终兼容,即矩阵的列数将与后续矩阵的行数匹配。假设将两个矩阵相乘的费用AxB * BxC为A*B*C。 您的代码必须处理最多100个矩阵的列表,每个矩阵的最大维度为999,并在合理的时间内进行处理。 例子2 输入 5x10 10x5 5x15 15x5 输出 1 3 2 要么 3 1 2 例子3 输入 22x11 11x78 78x123 123x666 666x35 35x97 97x111 …
9 code-golf  math 

4
计算{1,2,…,n}上的拓扑数
任务 编写一个函数/程序,该函数/程序将其n作为参数/输入并打印/返回集合上的拓扑数(如下所示){1,2,...,n}。 拓扑定义 令X为任意有限集,并假设T是X 的幂集的子集(即,包含X的子集的集合)满足以下条件: X和空集在T中。 如果两个组U和V是在T,则联合这两组都在T. 如果两组U和V在T中,则这两组的交点在T中。 ...然后T称为X上的拓扑。 技术指标 您的程序是: 一个函数,它接受n作为参数 或输入 n 并打印或返回set上(不同)拓扑的数量{1,2,...,n}。 n 是小于11的任何非负整数(当然,如果您的程序处理的n大于11也没有问题),并且输出是一个正整数。 您的程序不应使用任何类型的库函数或本机函数来直接计算拓扑数。 输入示例(n的值): 7 输出/返回示例: 9535241 您可以在此处或此处检查返回值。 当然,最短的代码胜出。 获胜者已确定,但是,如果出现较短的代码,我可能会更改获胜者。

2
浮点加法,无浮点!
您的任务是用任何一种语言编写一个程序,该程序无需使用任何分数或浮点数学运算即可将两个浮点数加在一起。允许使用整数数学。 格式 数字的格式是包含1和0的字符串,它们表示IEEE 754 32位float的二进制值。例如,数字2.54将由字符串“ 010000000010001010001000111101011100”表示。 目标 您的程序应以上述格式输入两个数字,将它们加在一起,然后以相同格式输出结果。任何语言中最短的答案都将赢得! 规则 绝对不允许使用浮点数,十进制或任何类型的非整数数学函数。 您可以假设输入是干净的(即仅包含1和0)。 您可以假定输入是数字,而不是Inf,-Inf或NaN或次正规量。但是,如果结果大于最大值或小于最小值,则应分别返回Inf和-Inf。异常(异常)结果可能会刷新为0。 您不必正确处理舍入。如果您的结果有些出众,请不要担心。 测验 要测试您的程序,您可以使用此工具在十进制和浮点二进制数之间转换。 1000 + 0.5 = 1000.5 01000100011110100000000000000000 + 00111111000000000000000000000000 = 01000100011110100010000000000000 float.MaxValue + float.MaxValue =无穷大 01111111011111111111111111111111 + 01111111011111111111111111111111 = 01111111100000000000000000000000 321.123 + -123.321 = 197.802 01000011101000001000111110111110 + 11000010111101101010010001011010= 01000011010001011100110101010000 祝好运!

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.