Questions tagged «math»

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

2
在x86程序集中计算数量级的最快方法
任务很简单:编写汇编程序,使用尽可能少的时钟周期来计算整数的数量级。 数量级定义为log10,不是log2。 有效输入的范围是0到(包括)。未定义超出该范围的输入行为。1012 值应四舍五入为最接近的整数,但给定输入0的输出应为0。(您可以认为这是无符号整数中负无穷大的最佳表示形式)。 必须是x86汇编。 该整数必须是运行时值,而不是静态/内联整数。因此,我们在编译时不知道它是什么。 假设您已经将一个整数加载到寄存器中。(但为了清楚起见,请在答案中包括在寄存器中设置值)。 无法调用任何外部库或函数。 免费使用英特尔文档中的任何可用说明。 没有C 可接受〜7种Intel Core架构中的任何一种(在第10页上列出)。理想情况下为Nehalem(Intel Core i7)。 胜出的答案是使用尽可能少的时钟周期的答案。也就是说,它每秒可以进行最多的操作。大概的时钟周期摘要在这里:http : //www.agner.org/optimize/instruction_tables.pdf。发布答案后,可能会计算时钟周期。

5
计算正方形的Delacorte数
挑战:以任何语言实现Delacorte数的计算。最短的代码获胜。 对于不同整数的一个给定的方阵1..n²(可能边长Ñ在3和27之间至少),其德拉科特数是产品的总和满足gcd(A,B)×distance²(A,B)为每个不同的对整数{a,b}。 以下示例显示了Delacorte数为160的3×3正方形。 3 2 9 4 1 8 5 6 7 在这个正方形中,我们有36个不同的对来计算,例如对4和6:gcd(4,6)× 距离 ²(4,6)= 4 另一个用于测试的示例正方形-的Delacorte数为5957: 10 8 11 14 12 21 4 19 7 9 5 13 23 1 16 18 3 17 2 15 24 22 25 6 20 Delacorte Numbers摘自该编程竞赛 -有关详细信息,请参阅此处。竞赛于2015年1月结束。这真是太好了! 规则: 必要的换行符计为1个字符。您可以在打高尔夫球的解决方案中添加换行符,但是只有在必要时才使用该语言进行计数。 您可以选择处理输入和输出的方式,而不必计算必要的语言框架,例如标准包含或主函数标头。仅实际的代码计数(包括快捷方式/别名定义),例如此C#示例: namespace System …
12 code-golf  math 

6
实现一个8位加法器
挑战 实现一个函数,该函数接受值范围为0-255的两个整数,并返回这些整数的总和256。您只能使用按位取反(〜),按位或(|),移位运算符(>>,<<) ,以及赋值(=)。 您不能使用的东西包括(但不限于) 加,减,乘和除 循环 条件语句 函数调用 最好使用二进制或二进制取反以及移位操作。如果出现平局,则最受欢迎的解决方案将获胜。与往常一样,存在标准漏洞。 这是一个简单的2位加法器的示例。它使用77个二进制取反,28个二进制“或”和2个移位,总共得到107分(可以通过运行带有C的预处理器来看到gcc -E)。通过删除#defines并简化结果表达式,可以使其效率更高,但是为了清楚起见,我将其保留了下来。 #include <stdio.h> #define and(a, b) (~((~a)|(~b))) #define xor(a, b) (and(~a,b) | and(a,~b)) int adder(int a, int b) { int x, carry; x = xor(and(a, 1), and(b, 1)); carry = and(and(a, 1), and(b, 1)); carry = xor(xor(and(a, 2), and(b, 2)), …

7
找到最大的操作
挑战在于使用基本算术运算符(加法,减法,乘法,一元负数)从整数列表中找到最大数目 输入值 整数列表 输出量 使用 intput中的每个整数的最大结果。 输入顺序无关紧要,结果应该相同。 您不需要输出完整的操作,只需输出结果即可。 例子 Input : 3 0 1 Output : 4 (3 + 1 + 0) Input : 3 1 1 2 2 Output : 27 ((2+1)*(2+1)*3)) Input : -1 5 0 6 Output : 36 (6 * (5 - (-1)) +0) Input : …

5
提升力量
挑战 挑战是编写一个程序,该程序需要一个正数a和一个非零数b并输出a^b(a升为幂b)。您只能+ - * / abs()用作数学函数/运算符。这些只能应用于标量值,而不能应用于整个列表或数组。 例子: 1.234 ^ 5.678 = 3.29980 4.5 ^ 4.5 = 869.874 4.5 ^-4.5 = 0.00114959 相关:http : //xkcd.com/217/ 细节 您可以编写在控制台中使用的函数或类似构造。如果您不能使用控制台输入,则可以假定两个数字都通过标准输出或写入文件的形式保存在变量和输出中。输出必须正确至少为4个有效数字。您可以假定a和b均为非零值。超过1分钟的运行时间是不可接受的。最少的字节数将获胜。请说明您的程序和算法。 编辑:只需要考虑积极的基础。你可以假设a>0。请注意,两个数字都不必是整数!!!

3
将小瓶放在离心机中
这个问题源自reddit用户taho_teg的reddit线程,但已扩展为更通用的“难题”。 您有一台带有24个小孔的离心机,这些小瓶围绕中心轴均匀分布在一个圆周上。如果现在有多个样品瓶并且要启动离心机,则需要确保将它们以平衡的方式放置。您无法平衡的样品瓶数量只有1和23。例如,您可以明显地平衡4,但是您也可以通过将3个样品瓶做成一个“三角形”,并将另外两个样品放在两个相对的位置来平衡5。 目标 您必须编写一个程序来接受离心机的孔数(围绕旋转轴均匀分布在圆周上)作为输入,并输出一系列在离心机中无法平衡的小瓶数量。 您必须进行计算,而不能仅对预先计算的解决方案进行硬编码。 输入和输出必须以某种方式实现,以便不必为调用不同输入的程序而更改程序代码。编写可以通过控制台调用的函数(或您语言中的类似构造)也是可以接受的。 另请注意,如果您的离心机上有6个孔,则可以离心2个和3个样品瓶,但是您不能平衡5个,因为“三角形”和相对的两个在一点上会重叠。另一个示例是对于n = 15,您不能平衡11个样品瓶,可以平衡6和5个样品瓶,但是这些解决方案的组合将重叠(当然,这还不是不可能做到这一点的标准)。 更新资料 似乎有些人不了解给定的示例,因此我在此处制作了一个图形。请简短描述您的算法如何工作以及一些示例输出以进行验证。请包括以下示例: n = 1, 6, 10, 24, 63, 100 = 10^2, 163 (prime), 40320 = 8!, 65536=2^2^2^2^2, 105953 (prime) 请注意40320和65536将产生大量列表,仅指示这些列表的长度可能是一个好主意。 如果您知道一些有趣的数字要添加到该列表中,请告诉我!该算法至少应能工作n = 1'000'000。 输出示例: 这些是一些示例输出-但可能是错误的,因为我只是手动计算它们。 1: 1 2: 1 3: 1,2 4: 1,3 5: 1,2,3,4 6: 1,5 7: 1,2,3,4,5,6 8: …
12 code-golf  math 

30
整数的整数平方根[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 2年前关闭。 问题: 在您选择的语言中,编写最短的函数以返回无符号64位整数的平方根的下限。 测试用例: 您的函数必须在所有输入中均能正常工作,但是这里有一些有助于说明这一点: INPUT ⟶ OUTPUT 0 ⟶ 0 1 ⟶ 1 2 ⟶ 1 3 ⟶ 1 4 ⟶ 2 8 ⟶ 2 9 ⟶ 3 15 ⟶ 3 16 ⟶ 4 65535 ⟶ 255 65536 ⟶ 256 18446744073709551615 ⟶ 4294967295 规则: 您可以随意命名函数。(未命名,匿名或lambda函数可以,只要可以调用即可。) 字符计数是此挑战中最重要的,但是运行时也很重要。我敢肯定,您可以使用很少的字符数在O(√n)时间内迭代向上搜索答案,但是O(log(n))时间确实更好(也就是说,假设输入值为n,不是n的位长)。 您可能会想使用纯整数和/或布尔算术来实现该功能。但是,如果您确实要使用浮点计算,那么只要您不调用任何库函数就可以了。因此,简单地说return …

24
计算数字的立方根
编写此代码的目的是创建一个程序或函数,以计算和输出作为输入给出的数字的立方根。 规则: 没有外部资源 不使用内置的多维数据集根函数。 不使用可以将幂加幂的方法/运算符(包括平方根,4根等)。 您的功能/程序必须能够接受浮点数和负数作为输入。 如果多维数据集的根是浮点数,则将其四舍五入到小数点后的4个数字。 这是一个代码高尔夫,以字节为单位的最短代码获胜。 测试用例: 27 --> 3 64 --> 4 1 --> 1 18.609625 --> 2.65 3652264 --> 154 0.001 --> 0.1 7 --> 1.9129 您可以使用上述所有测试用例来测试负数(-27 --> -3,-64 --> -4...)
12 code-golf  math 

8
涂一根棍子需要多长时间?
(基于此Math.SE问题,该问题还提供了一些图形) 我有一根看起来像这样的棍子: 我希望它看起来像这样: 我不是专业画家,因此,在开始这个雄心勃勃的DIY项目之前,我想确保自己不会感到头疼。 您的程序应该告诉我,画这根棍子需要多少步骤。每个步骤都涉及用纯色绘制连续的区域,该区域覆盖先前的油漆层。对于上面的示例,我可以先将左半部分涂成蓝色,右半部分涂成红色,然后将两个单独的绿色区域分别涂成4步(绿色不连续涂成)。 这是ASCII: ------ bbb--- bbbrrr bgbrrr bgbrgr 有两种不同的方法可以绘制这根棍子并最终得到相同的结果。但是,我只对时间估计感兴趣,这是四个步骤。 目标 您的程序应输出以给定的配色方案涂满棍子所需的最少步骤数。绘制方案将采用字符串形式,而输出将为数字。这是代码高尔夫。最短的程序获胜。 输入值 您的程序将以一串字母的形式接收一根棒的着色方案。每个唯一字母(区分大小写)代表唯一的颜色。 YRYGR grG GyRyGyG pbgbrgrp hyghgy 输出量 这些数字是油漆棒所需的最少步骤数。 4 3 4 5 4 说明 这就是我得出上述数字的方式。您的程序不需要输出以下内容: ----- YYY-- YRY-- YRYG- YRYGR --- g-- gr- grG ------- GGGGGGG GyyyGGG GyRyGGG GyRyGyG -------- pppppppp pbbbpppp pbbbrrrp pbgbrrrp pbgbrgrp …
12 code-golf  math 

1
日出和日落
我有点浪漫,我喜欢带我的妻子出去看看我们所在地的日出和日落。出于这个练习的原因,假设我没有代码可以告诉我恰好处于的日期,纬度和经度的日落或日出时间。 编码员的任务是生成最小的代码,该代码可能采用的是十进制的纬度和经度(以N和W为度,所以S和E为负数)和采用YYYY-MM-DD格式的日期(从2000年1月1日开始),它将以24小时格式吐出两次,用于日出和日落。 例如今天在澳大利亚悉尼 riseset -33.87 -151.2 2013-12-27 05:45 20:09 奖励:-100如果可以考虑高程-100如果可以考虑日光节约 代码必须根据客户机器自身时区中的纬度或经度或在输入中指定的相关时区中吐出时间。
12 code-golf  math 

1
通过整数操作实现IEEE 754 64位二进制浮点数
(我暂时将问题标记为“ C”,但是如果您知道另一种支持联合的语言,则也可以使用它。) 您的任务是+ - * /为以下结构构建四个标准数学运算符: union intfloat{ double f; uint8_t h[8]; uint16_t i[4]; uint32_t j[2]; uint64_t k; intfloat(double g){f = g;} intfloat(){k = 0;} } 这样操作本身就只能操纵或访问整数部分(因此也不能在操作过程中的任何时候都与double进行比较),并且结果是完全相同的(对于非数字结果,例如,功能上是等效的NaN)好像相应的数学运算已直接应用于double。 您可以选择要操作的整数部分,甚至可以在不同的运算符之间使用不同的整数部分。(尽管我不确定您是否要这样做,您也可以选择从联合中的任何字段中删除“未签名”。) 您的分数是四个运算符中每个字符的代码长度总和。最低分获胜。 对于不熟悉IEEE 754规范的我们来说,这是一篇有关Wikipedia的文章。 编辑: 03-06 08:47在intfloat结构中添加了构造函数。您可以使用它们进行测试,而不必手动设置double /etc。

2
Code Golf:宇宙飞船的命运是什么?[浮点版本]
这个问题比ASCII艺术版本要难一些。没有艺术,现在您可以进行浮点运算了! 挑战 当船上发生天文爆炸时,USS StackExchange正在穿越cg-00DLEF行星的重力场。作为该船的首席程序设计官,您的工作是模拟船的轨迹,以预测您是否会被迫撞倒cg-00DELF的太阳系中的土地。在爆炸期间,您的船严重受损。由于飞船的免费DEEEPRAROM *有限,因此您必须以尽可能少的字符编写程序。 *动态可执行电子擦除可编程随机存取只读存储器 模拟 有点像ASCII艺术版本,会有时间步伐的想法。在另一个版本中,时间步长是相对较长的时间:船舶可以在单个时间步长中超越行星的重力行进。在此,由于所涉及的距离较大,因此时间步长要小得多。然而,一个主要的区别是不存在细胞。飞船的当前位置和速度将是浮点数,以及所涉及的重力。另一个变化是,行星现在的尺寸更大。 模拟中最多有三个行星。这三个都将具有特定的位置,半径和重力。每个行星的重力是一个向量,直接向行星中心施加力。查找该矢量强度的公式为(Gravity)/(Distance**2),其中距离是从船到行星中心的精确距离。这意味着重力可以到达的地方没有限制。 在任何特定时间,飞船都有一个速度,即它从最后一个时间步到现在的距离和角度。该船也有动力。它在当前时间步与下一时间步之间行进的距离是其当前速度加到该位置所有重力矢量的总和。这成为飞船的新速度。 每个模拟的时间限制为10000个时间步。如果太空飞船在行星内部移动(比行星的半径更靠近行星的中心),则它会撞入该行星。如果到模拟结束时飞船没有坠入任何行星,则可以认为它已脱离重力。这艘船不可能如此完美地对准,以至于它能够在10000个时间步长上坠毁而设法在轨道上停留10000个时间步长。 输入值 输入到STDIN的四行。每行由四个逗号分隔的数字组成。这是数字的格式: ShipLocX,ShipLocY,ShipVelX,ShipVelY Planet1LocX,Planet1LocY,Planet1Gravity,Planet1Radius Planet2LocX,Planet2LocY,Planet2Gravity,Planet2Radius Planet3LocX,Planet3LocY,Planet3Gravity,Planet3Radius 如果少于三个行星,则剩余线将对所有值填充零。这是一个示例输入: 60,0,0,10 0,0,4000,50 100,100,4000,50 0,0,0,0 这意味着太空飞船位于(60,0),并且以“ 10个单位/时间步长”的速度直线“向上/向北”行驶。有两颗行星,一颗位于(0,0),另一颗位于(100,100)。两者的重力为4000,半径为50。即使所有这些都是整数,它们也不总是整数。 输出量 输出将是一个字到STDOUT,以告诉飞船是否坠毁。如果船舶坠毁,请打印crash。否则,请打印escape。这是上述输入的预期输出: crash 您可能想知道发生了什么。这是一个Pastebin帖子,其中包含该飞船的详细飞行日志。数字并不能很好地帮助人们可视化事件,所以这是发生了什么:飞船设法借助第二个行星(向东北)的引力逃脱了第一个行星(向西)的引力。它向北移动,然后略微经过第二个行星的西面,几乎没有丢失它。然后,它绕行星的北侧弯曲并撞向第二颗行星的东侧。 其他一些案件进行检查 60,0,10,-10 0,0,2000,50 100,100,1357.9,47.5 0,0,0,0 逃逸(由于平方反比定律,如果您离60个单位远,则2000重力不大) 0,0,0,0 100,100,20000,140 -50,-50,50,50 -100,-100,50,50 坠毁(第一颗行星非常巨大且非常接近) 0,0,0,0 0,0,0,0 0,0,0,0 0,0,0,0 逃脱(这是一个极端的情况:没有行星,直接的解释将表明飞船直接在行星的顶部) 规则,限制和注释 这是代码高尔夫。适用标准代码高尔夫规则。您的程序只能用可打印的ASCII字符编写。您无法访问任何类型的外部数据库。您可以用任何语言(除了专门用于解决此挑战的语言)编写条目。 结束传输

4
从前缀表示法转换为前缀表示法
给定一个算术表达式,可以包括括号(()),指数(^),除法(/)和乘法(*),加法(+)和减法(-)(按该操作顺序),例如 a ^ (2 / 3) * 9 * 3 - 4 * 6 以前缀表示法输出相同的表达式。 (- (* (* (^ a (/ 2 3)) 9) 3) (* 4 6)) 输入和输出中的空格都是可选的。您可以假定所有运算符都是左关联的,并且表达式中的所有数字都是一位整数(即[0-9])。 这是一场代码挑战赛,因此最短的解决方案将获胜。
12 code-golf  math 

3
实施图形计算器
涉及计算器的问题很多。但是,似乎没有涉及实现图形计算器的事情。 挑战 您将要编写一个完整的程序,该程序将多个公式用作来自STDIN的输入并将其图形化到STDOUT。输入将采用形式f1(x)=x^2-x-1。f后面会有一个数字0-9(含0-9),然后是(x)=,然后是要绘制图形的公式。您的程序应该能够接受输入,图形,接受更多输入,图形等。 这是代码高尔夫。 您的图表的X轴范围应为-5到5,每1/2单位至少有一个点的分辨率。Y轴要求相同。与现代计算器相比,这似乎是一个很小的范围,但增加此数量很可能是微不足道的。该图应在其上绘制轴,并带有+整数形式的刻度线。 应按正常的操作顺序对公式进行评估。这些公式中将没有任何垂直渐近线/未定义区域。该变量将始终为x。如果使用相同的方程式编号输入两个公式,则最旧的一个应被擦除并用新的公式替换。空白公式的计算结果应为零。由于公式可能不会总是给出1/2的整数倍,因此您需要四舍五入到最接近的1/2。 绘制公式的图形时,其线应由公式的数字组成。当一条线与某个轴相交时,该轴应在顶部绘制。当两条线相互交叉时,显示的内容无关紧要。 输入示例 f1(x)=x+1 输出量 + 1 | 1 + 1 | 1 + 1 | 1 + 1 |1 + 1| +-+-+-+-+-+-+-+-+-+-+ 1 | 1 + 1 | 1 + 1 | 1 + 1 | 1 + | + 输入值 f2(x)=(x^2)^0.25 输出量 + …

5
多项式插值
编写一个 使用真正的任意精度有理数执行多项式插值的程序。输入看起来像这样: f(1)= 2/3 f(2)= 4/5 f(3)= 6/7 ... 您可以假设=符号前后只有一个空格,所有数字都是小数或整数。您可能还假设输入中的所有分数都是不可约的。 您可以假设不需要进行错误检查,即输入是有效的,并且f(x)中没有x被加倍。 输出应采用兼容LaTeX的形式,发出的LaTeX代码应产生与此处给出的输出相同的图形表示。 f(x)= 123x ^ 2 + \ frac {45} {2} x + \ frac {7} {4} 例如,必须尽可能减少分数。\frac{2}{4} 不允许这样的事情。如果数字是整数,请不要使用小数。 特殊规则: 您的程序应该... 适用于12级以下的多项式 不到1分钟即可完成输入 不使用任何为您完成整个计算的函数 输出最小可能次数的多项式 测试用例: 给定的测试用例只是为了澄清。您的程序应为所有正确的输入产生正确的结果。 输入值 f(1)= 2/3 f(2)= 4/5 f(3)= 6/7 输出量 f(x)=-\ frac {4} {105} x …

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.