Questions tagged «math»

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

1
迭代移动平均线
如果我们有一个列表,比如说list [9, 2, 4, 4, 5, 5, 7],我们可以在其中进行移动平均。 假设一个有3个元素的窗口,每个元素都被这样的窗口所代替:[[9], [9, 2], [9, 2, 4], [2, 4, 4], [4, 4, 5], [4, 5, 5], [5, 5, 7]],然后取平均值,得到[9.0, 5.5, 5.0, 3.3333333333333335, 4.333333333333333, 4.666666666666667, 5.666666666666667]。 到目前为止非常简单。但您可以注意到的一件事是,移动平均线可以“平滑”列表。因此,这就引出了一个问题:必须使移动平均值多少次才能使列表“足够平滑”? 你的任务 给定一个浮点数列表,一个整数窗口大小和一个浮点数,输出必须获取移动平均值才能获得小于该浮点数的标准偏差的次数。对于那些不知道的数据,标准差用于衡量一组数据的不平滑程度,可以通过以下公式计算得出: 例如,使用前面的列表和max stddev .5,我们得到如下所示的8迭代: [9.0, 5.5, 5.0, 3.3333333333333335, 4.333333333333333, 4.666666666666667, 5.666666666666667] [9.0, 7.25, 6.5, 4.6111111111111116, 4.2222222222222223, …

3
GF(5)上的不可约多项式
在一些系数的多项式字段 ˚F被称为不可约超过˚F,如果它不能被分解成低次多项式与系数的乘积˚F。 考虑Galois域 GF(5)上的多项式。该字段包含5个元素,即数字0、1、2、3和4。 任务 给定正整数n,计算在GF(5)上度为n的不可约多项式的数量。这些只是系数为0-4的多项式,不能分解为系数为0-4的其他多项式。 输入值 输入将是单个整数,并且可以来自任何标准来源(例如STDIN或函数参数)。您必须支持最大最大整数的输入,以使输出不会溢出。 输出量 打印或返回在GF(5)上不可约的多项式的数量。请注意,这些数字很快就会变大。 例子 In : Out 1 : 5 2 : 10 3 : 40 4 : 150 5 : 624 6 : 2580 7 : 11160 8 : 48750 9 : 217000 10 : 976248 11 : 4438920 请注意,这些数字构成了OEIS中的序列A001692。

5
数学替代
有时使用多个输入来运行数学问题会很有用。这项挑战的目的是要编写一个简化此任务的程序。 产生数字的表达式 您必须支持3种类型的表达: 单一数字生成器:非常简单,只需一个文字数字 多数生成器:有点复杂。它们被方括号([])包围。数字,在表达式中用逗号()分隔。实例[-1,2,3.26]。 范围生成器:这是一个大括号({})包围。它将有3个数字,以逗号分隔。此表达式的格式为{start,stop,step}。start并且stop具有包容性。 评估规则 您必须支持操作顺序。(https://en.wikipedia.org/wiki/Order_of_operations#Definition) 您不需要支持括号。 表达式中可以出现任意数量的空格。 您必须支持浮点数(无论您的语言默认为哪种精度都可以)。 除以0结果NaN(不是数字)。 您的程序必须支持乘法(*),除法(/),加法(+)和减法(-)。 输出量 输出的每一行都是生成器的组合之一。格式为表达式(将实数替换为表达式),后跟等号(=)和求值结果。生成器的所有组合都必须在输出中表示。 例子 (>>>表示输入) >>>3 * [3,2] 3 * 3 = 9 3 * 2 = 6 >>>{1,2,3} 1 = 1 <-- this is because 1 + 3 > the end >>>{0,2,1} + {0,1,1} 0 + 0 …
13 code-golf  math 

4
计算熵
输入值 M表示为两条以空格分隔的整数行的矩阵。每条线将具有相同数目的整数,并且每个整数将是-1或1为至多20每行的整数的数目 M因此将2通过n其中n在每两行的整数的个数。 您的代码应该是完整的程序。并接受标准输入或来自文件的输入(您可以选择)。您可以接受标准输入,文件输入或仅作为参数输入。但是,如果您选择后者,请给出一个代码示例,以明确说明该代码如何工作,并记住它必须是一个完整的程序,以及矩阵M将如何在输入中表示。换句话说,您可能必须进行一些解析。 输出量 所述二进制信息熵的分布M*x,其中的元素x均匀地和独立地选自{-1,1}选择。 x是一个n三维列向量。 离散概率分布的熵为 - sum p_i log_2(p_i) 在这种情况下,p_i是的概率i个独特的可能M*x。 示例和有用的提示 作为一个工作示例,让矩阵M为 -1 1 -1 -1 现在来看所有2^2可能的向量x。对于每一个,我们计算M*x所有结果并将其放入一个数组(2分量向量的4元素数组)中。尽管对于这四个向量中的每个向量,其出现的概率为1/2^2 = 1/4,但我们仅对每个唯一的结果向量M*x出现的次数感兴趣,因此,我们总结了导致相同的唯一向量的配置的各个概率。换句话说,可能的唯一M*x向量描述了我们正在研究的分布的结果,并且我们必须确定这些结果中的每一个的概率(根据构造,该概率始终是1/2^2或通常是的整数倍1/2^n),计算熵。 在一般n情况下,取决于can M的可能结果,其M*x范围从“所有不同”(在这种情况下,我们具有in的n值,每个值等于)到“所有相同”(在这种情况下,可能存在一个结果)。ip_ip_i1/2^np_1 = 1 具体来说,对于上述2x2矩阵,M我们可以通过将其乘以四个可能的配置([+-1; +-1])来发现,每个结果向量都是不同的。因此,在这种情况下,有四个结果p_1 = p_2 = p_3 = p_4 = 1/2^2 = 1/4。回顾log_2(1/4) = -2我们有: - sum p_i log_2(p_i) = -(4*(-2)/4) = 2 因此,此矩阵的最终输出为2。 测试用例 …
13 code-golf  math 

4
获取吸气剂
任务 我想每个人都喜欢自动代码生成并节省工作时间。您白天必须创建许多类和成员,而又不想getters手动创建所有这些类和成员。 任务是编写一个程序或函数,该程序或函数getters将为您自动为所有类成员生成。 输入 在我们的语言中,对象非常简单。类和成员的名称必须以字符开头,[a-zA-Z]并且只能包含字符[a-zA-Z0-9]。这是一个例子: class Stack { public overflow; protected trace; private errorReport; } 输出 这是基于给定示例的有效输出: class Stack { public overflow; protected trace; private errorReport; public function getOverflow() { return this->overflow; } public function getTrace() { return this->trace; } public function getErrorReport() { return this->errorReport; } } 吸气剂 getter方法的要求是: …
13 code-golf  string  syntax  code-golf  math  primes  rational-numbers  code-golf  graphical-output  image-processing  code-golf  kolmogorov-complexity  music  audio  code-golf  string  code-golf  math  geometry  code-golf  math  sequence  combinatorics  code-golf  game  grid  board-game  code-golf  restricted-source  array-manipulation  source-layout  code-golf  base-conversion  binary  code-golf  math  physics  code-golf  math  number  date  expression-building  code-golf  array-manipulation  graph-theory  decision-problem  popularity-contest  error-correction  code-golf  kolmogorov-complexity  geometry  grid  code-challenge  arithmetic  combinatorics  set-partitions  code-golf  kolmogorov-complexity  sequence  fibonacci  code-golf  restricted-source  pristine-programming  code-golf  code-golf  string  kolmogorov-complexity  code-golf  arithmetic  code-golf  string  parsing  code-golf  code-golf  sorting  counting  permutations  3d  code-golf  code-golf  ascii-art  music  code-golf  string  code-golf  string  ascii-art  code-golf  string  code-golf  quine  polyglot  code-golf  math  string  code-golf  internet 

4
疯狂的图书馆员有趣的素置换索引号生成器
您用主序列码保存了这一天,而数学老师则喜欢它。如此之多,以至于对馆员(a / k / a,您的老板)提出了新的挑战。恭喜,您可以对解决方案进行编码,以便管理员可以再次打动数学老师。 从以10为底的N的自然数序列开始 0、1、2、3、4、5、6 ... 排除0和1,此序列中的每个数字均为素数,P 2、3、5、7、11、13 ... 或复合,C 4、6、8、9、10、12、14、15、16、18、20 ... 反映如何图书馆管理员思想插入的整数位数成从一个数的小数膨胀P,数学老师代替创建的函数G(X,Y) ,需要一个数x从Ñ与1 <= x <= 9和一个数y从Ç并插入x到y每个位置的小数点扩展,按从左到右的顺序,仅选择唯一的数字。 例如,G(3,14)是314, 134, 143。但是,G(1,14)是唯一的114, 141,因为不管你前面加上或插入1到14,相同的编号114被生成。 数学老师想知道,如果您按递增顺序进行运算,那么在获得P之前,必须进行多少次排列x。数学老师将此称为数字的复合素数索引,并将其写为CPI(y)。 例如,4只需执行两次:14, 41,因为41是质数,所以CPI(4)是2。但是,在作为素数达到之前,8需要完成6次,因此CPI(8)为。18, 81, 28, 82, 38, 83836 给定输入数字,您的任务是编写将输出此Composite-Prime索引的代码。 输入值 一个整数y,使得y在Ç,通过函数的参数,STDIN或等效输入。 为了进行计算,您可以假设y将适合通常的整数范围(例如,假设2 31 -1为上限)。 y不在C中的行为是不确定的。 输出量 将所得复合总理指数,如上所述计算,输出到STDOUT或等效,但有两个例外: 如果最后一个排列(即附加9到y)是导致质数的排列,则输出-1。下面扩展了一个示例y=14。 如果没有置换(即G(x,y)是所有C的子集1 <= x <= 9),则输出0。下面扩展了一个示例y=20。 例子 y -> …

13
直方定位
欢迎来到我的第一个高尔夫挑战赛!:)让我们跳进去吧。 挑战: 给定两个浮点向量,O(原点)和T(目标),您必须创建一个程序以将值L和R打印到STDOUT。 O是正方形的一个角 T是正方形的一个角,位于O的对面 L是2D点(角),表示不完整正方形的另一个点 R是与L相反的2D点(角) 规则 O和T的值必须从STDIN中读取(请参见示例输入)。 同样,必须将L和R的值打印到STDOUT。 计分和奖金 计算程序的字节数。 如果您的程序绘制的线在O到L到T到R之间连接,请从字节数中减去15个字节。 例子 第一行涵盖输入(O的第一个方括号和T的下一个括号),其他行代表预期的输出。 [0,0] [3,3]预期值:[0,3] [3,0] [0,0] [-2,-2]预期值:[-2,0] [0,-2] [1,-1] [4,2]预期:[1,2] [4,-1] [0,-1] [0,1]预期值:[-1,0] [1,0] 注意:输入和输出可以是浮点! 重要信息! 值O和T可以采用任何格式,只要它们来自STDIN(例如,在[]或()...之内),请使用所需的任何格式。 L和R可以任何顺序打印。 请记住:连接(O-> L-> T-> R-> O)时,每一侧的长度必须相同! 获奖 这是代码高尔夫球,因此最少的字节答案会获胜! 优胜者答案将在2015年11月15日星期日(芬兰时间)接受(如果我没记错的话,该日期写成美国2015年11月15日的样子,请不要感到困惑)。 打高尔夫球快乐!

15
找出两点之间的角度
给定两个点A和B,求AO出线BO与点之间的夹角,O其中点O为((0,0))。另外,取决于点的位置,角度可以为正或负(请参见示例)。输入将是点A和B,并且可以任何方便的形式给出。输出将是以度为单位的角度(但如果AO绕原点逆时针旋转则为正,如果顺时针旋转BO则为负)。如果角度为180度,则可能会返回负或正输出。同样,角度可以是相同角度(90 deg等于-270 deg)的正或负形式。例子: 输入:A(5,5) B(5,-5)输出:-90(AO旋转-90度得到BO)。 输入:A(5,-5) B(5,5)输出:90(AO旋转90度得到BO)。 这是代码高尔夫球,因此以字节为单位的最短代码胜出!

10
Sundaram筛(用于查找质数)
挑战 实施Sundaram筛子查找下面的质数n。取一个输入整数,n并输出下面的质数n。您可以假设该值n始终小于或等于一百万。 筛 从从1到的整数列表开始n。 删除以下形式的所有数字i + j + 2ij: i并且j小于n。j始终大于或等于i,大于或等于1。 i + j + 2ij 小于或等于 n 将剩余数字乘以2,然后加1。 这将产生2小于的所有质数(除了应包含在输出中的质数)2n + 2。 这是用来在下面找到素数的筛子的动画202。 输出量 您的输出应该是每个素数≤ n(按升序排列),后跟换行符: 2 3 5 哪里n是5。 例子 > 10 2 3 5 7 > 30 2 3 5 7 11 13 17 19 23 29 输入用表示>。

6
行列式优化挑战
考虑所有条目均为0或1的30 x 30 Toeplitz矩阵。此难题是查找具有最大行列式的矩阵的简单优化难题。 输入无 输出一个30 x 30 Toeplitz矩阵及其所有行列式,其所有条目均为0或1。 得分输出矩阵的行列式。如果两个人得分相同,则第一个答案将获胜。 到目前为止的领先作品 尼克·阿尔杰(Nick Alger)在Matlab中的65,455,857,159,975 (大约(10 ^ 13.8) 65,455,857,159,975在Python中由isaacg(大约10 ^ 13.8) 到2012年,在Mathematica中达到39,994,961,721,988(约10 ^ 13.6) Flounderer在R中的39,788,537,400,052 (大约10 ^ 13.6) Vioz-在Python中获得的8,363,855,075,832(大约10 ^ 12.9) 朱莉娅(Julia)的6,984,314,690,903,由Alex A.(大约10 ^ 12.8) 恼人的其他限制2015年7月16日 如果可能的话,请使用任意或高精度算法来计算最终输出行列式,以便我们可以确定它到底是什么(它应该始终是整数)。在python中,这应该会有所帮助。

3
自然线性Diophantine方程
两个变量中的线性Diophantine方程是ax + by = c形式的方程,其中a,b和c是常数,x和y是整数。 对于许多自然发生的丢番图方程,x和y表示不能为负的数量。 任务 编写一个接受系数a,b和c作为输入并返回任意对自然数(0、1、2,...)x和y的程序或函数,以验证方程ax + by = c(如果有)存在。 附加规则 您可以选择任何只涉及所需整数的语言,只要您不在输入中嵌入任何代码,就可以选择仅涉及所需整数的任何格式,以及(可选)语言的数组/列表/矩阵/元组/矢量表示法。 您可以假设系数a和b都非零。 您的代码必须适用于-2 60和2 60之间的任何三元整数;它必须在一分钟内在我的计算机(Intel i7-3770,16 GiB RAM)上完成。 您可能不使用任何可解决Diophantine方程从而使这项任务变得微不足道的内置函数,例如Mathematica FindInstance或FrobeniusSolve。 如果找不到解决方案,只要符合时间限制并且其输出不能与有效解决方案混淆,您的代码可能会按照您希望的方式运行。 适用标准代码高尔夫球规则。 例子 下面的示例说明方程2x + 3y = 11的有效I / O,正好具有两个有效解((x,y)=(4,1)和(x,y)=(1,3))。 Input: 2 3 11 Output: [4 1] Input: (11 (2,3)) Output: [3],(1) (x,y)=(1,0)对是2x + 3y = 2的唯一有效解决方案。 …

11
计算距离mod N
很长时间以来,您一直在从Advanced Collecting Device Controller™收集数据。您检查了日志,并惊恐地发现出了什么问题:数据只包含数字的最后几位! 幸运的是,您知道初始值,并且该值永远不会快速变化。这意味着您可以通过查找起点之间的距离来恢复其余部分。 挑战 您将编写一个程序或函数来计算值的变化量,给定一个模数N和一系列中间值modulo N。 每对数字之间的变化始终小于N/2,因此每个测试用例只有一个有效答案。 将以N您选择的格式为您提供输入> 2 的整数和值列表作为输入。输入可以通过STDIN或命令行或函数自变量给出。 您将输出一个整数,原始值已更改的数量。输出可以打印到STDOUT或返回。 规则 您的程序必须能以小于的距离和模数工作2^20。 您可以假设: N至少是3。 该列表至少包含2个值。 列表中的所有值都至少为0且小于N。 数字中的所有变化均小于N/2。 其他都是无效的输入,您的程序可能会做任何想做的事情。 禁止为此目的而使用标准漏洞,任何非标准库和内置函数。 这是代码高尔夫球,因此以字节为单位的最短程序获胜。 示例测试用例 输入: 3 0 1 2 2 0 1 0 2 1 2 0 1 2 1 1 输出: 4 说明(带有示例值): Value mod 3: 0 1 2 …
13 code-golf  math 

1
公平分享披萨
与朋友共享披萨的困难在于,很难确保每个人都得到相同数量的意大利辣香肠。因此,您的任务是决定如何公平地切片披萨,以便每个人都开心。 方向 编写一个程序,给定圆形比萨饼上意大利辣味香肠的位置列表和要制作的切片数量,输出一个程序,将比萨饼切成的角度列表,以使每个切片上的比萨饼数量相同它。 披萨只有一个馅料:意大利辣香肠。 您的朋友不在乎切片的大小,只是他们没有从任何意大利辣香肠中被骗。 比萨饼是一个以原点为中心的圆(0, 0),半径为1。 意大利辣香肠是圆心,只要输入内容表明它们居中且半径为0.1 将输入作为代表要制作的切片数量的整数,以及代表意大利辣香肠在直角坐标系上的位置的有序对列表。(以任何合理的格式) 输出应该是一个以弧度表示的角度列表,该角度表示比萨的“切口”的位置(在范围内0 <= a < 2pi)。(以任何合理的格式)(精度至少应为+/- 1e-5。) 您可以在切片上放上一部分意大利辣香肠(例如,如果一个比萨饼上有一个意大利辣香肠,并且需要由10个人共享,则将比萨切成10次,全部切成薄片切成意大利辣香肠。但是要确保它是公平的) !) 切成薄片(可能必须)切成多个意大利辣味香肠。 意大利辣味香肠可能会重叠。 例子 输入: 8 people, pepperonis: (0.4, 0.2), (-0.3, 0.1), (-0.022, -0.5), (0.3, -0.32) 可能的有效输出: slices at: 0, 0.46365, 0.68916, 2.81984, 3.14159, 4.66842, 4.86957, 5.46554 这是此示例的可视化(每个人都可以得到一半的意大利辣香肠): 更多示例: Input: 9 people, 1 pepperoni …

3
电脑:数学
这一挑战部分是算法挑战,涉及一些数学运算,部分只是最快的代码挑战。 对于某个正整数n,请考虑一个长度为1s和0s的均匀随机串,n并将其称为A。现在还要考虑第二个统一选择的长度n为或的随机字符串-1,并将其称为。现在,让我们成为+ 。那是串联的。0,1B_preBB_preB_preB_pre 现在考虑Aand 的内积,并从中B[j,...,j+n-1]调用它Z_j和index 1。 任务 输出应为n+1分数列表。的i在输出第术语应该是准确的概率的所有第一i方面Z_j具有j <= i相等0。 得分了 n在我的机器上,您的代码可在10分钟内为您的代码提供最大的正确输出。 决胜局 如果两个答案得分相同,则第一个提交者获胜。 在(非常非常不可能)的事件中,如果有人找到获得无限分的方法,则将接受这种解决方案的第一个有效证明。 暗示 不要尝试用数学方法解决这个问题,这太难了。我认为最好的方法是回到高中的概率的基本定义,并找到巧妙的方法来获取代码以对各种可能性进行详尽的列举。 语言和图书馆 您可以使用任何具有免费编译器/解释器/等的语言。适用于Linux以及任何可免费用于Linux的库。 我的机器 时间将在我的机器上运行。这是在AMD FX-8350八核处理器上的标准ubuntu安装。这也意味着我需要能够运行您的代码。因此,请仅使用易于使用的免费软件,并请提供有关如何编译和运行代码的完整说明。 一些测试输出。考虑每个的第一个输出n。那是什么时候i=1。对于n1到13,它们应该是。 1: 4/6 2: 18/36 3: 88/216 4: 454/1296 5: 2424/7776 6: 13236/46656 7: 73392/279936 8: 411462/1679616 9: 2325976/10077696 10: 13233628/60466176 11: 75682512/362797056 12: 434662684/2176782336 13: 2505229744/13060694016 您也可以i=1在http://oeis.org/A081671上找到其通用公式。 …

1
Manufactoria中的原始性测试
背景 Manufactoria是一款有关编程的游戏。玩家必须使用一种二维编程语言来完成任务。如果您从未听说过,最简单的学习方法就是尝试游戏的前几个级别。 挑战 您面临的挑战是创建一个测试数字素数的程序。 输入将是队列中的一系列N个蓝色标记。如果N为质数,则程序应接受它(将机器人移至终点)。如果N是合成的,则您的程序应拒绝它(将它放在地板上的某个地方)。 提交选项 由于这是比典型的工厂挑战赛更为复杂的挑战,因此我决定允许更多方式提交您的答案。 香草 我创建了一个13x13的自定义级别来构建和测试提交。定制测试级别如下。 13x13自定义级别 游戏仅在自定义级别上允许8个测试用例,但从理论上讲,您的创作应能够处理任何自然数N,仅受可用内存的限制。 仅供参考,自定义级别提供的测试用例如下: 1 -> reject 2 -> accept 4 -> reject 5 -> accept 7 -> accept 9 -> reject 11-> accept 15-> reject 扩展网格 有些用户可能想要的空间比13x13的网格还多。以下是通过更改URL中的数字创建的游戏内15x15自定义级别的链接: 15x15自定义级别 可悲的是,较大的自定义级别不起作用,因为无法访问其他单元。 伊索朗工厂 Manufactoria已适应基于ASCII的语言。如果您想采用其他方法来设计/测试您的作品,或者无法将最终解决方案安装到游戏板上,则可以使用此esolang。您可以在此处找到有关此esolang的信息: 峨factor工厂 esolang与实际游戏之间存在一些差异。例如,传送带交叉口的处理方式有所不同。尝试避免利用这些差异。 更快的测试方法 当涉及需要数千步才能完成的程序时,游戏速度非常慢。我的概念验证解决方案花了28042步来拒绝15。即使在游戏中以50倍加速时,这也花了太长时间。 我发现这个网站很有帮助。只需将链接复制粘贴到您的答案,就可以使用特定的输入来测试您的答案。28042步骤过程耗时不到一秒钟。 需要注意的一件事是,即使您的计算机正常工作,它也会经常说类似“不正确地接受”之类的内容。这是因为该网页仅知道测试用例。例如,它将说我的解决方案“错误地接受了”数字3,即使我的机器实际上是正确的。 如何取胜 评分标准是零件数(占用的单元)。这是代码高尔夫球,因此提交最少的部分将获胜。 对于那些感兴趣的人,我的基准解决方案包含96个零件,可安装在13x13网格上。寻找更好的算法可能会带来巨大的改进,因为我知道我使用了次优算法。

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.