Questions tagged «arithmetic»

与基本算术有关的挑战。

6
整数格上的误报
排行榜 User Language Score ========================================= Ell C++11 293,619,555 feersum C++11 100,993,667 Ell C++11 78,824,732 Geobits Java 27,817,255 Ell Python 27,797,402 Peter Taylor Java 2,468 <reference> Julia 530 背景 在整数坐标的二维网格上工作时,有时您想知道两个向量(具有整数分量)是否具有相同的大小。当然,在欧几里得几何中,向量的大小(x,y)由 √(x² + y²) 因此,幼稚的实现可能会为两个向量计算该值并比较结果。这不仅会导致不必要的平方根计算,而且还会导致浮点数不准确的问题,这可能会产生误报:幅值不同但浮点表示中的有效数字都相同的向量。 出于此挑战的目的,我们将误报定义为一对坐标对,(a,b)并(c,d)为此: 当表示为64位无符号整数时,它们的平方大小不同。 当表示为64位二进制浮点数并通过64位平方根计算得出时,它们的大小相同(根据IEEE 754)。 例如,使用16位表示(而不是64位),产生假阳性的最小一对矢量为: (25,20) and (32,0) 它们的平方平方大小分别是1025和1024。求平方根产量 32.01562118716424 and 32.0 但是在16位浮点数中,这两个都被截断为32.0。 同样,最小的2对产生32位表示形式的假阳性 (1659,1220) and (1951,659) …

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 : …

4
Kakuro组合
Kakuro组合 因为我无法进行心理算术,所以我经常会遇到“ Kakuro难题”,这需要受害者反复计算出1到9(含)范围内的不同数字加起来到1到45范围内的另一个数字。有很多数字。例如,如果您可能想知道如何从3个数字中获取23,则唯一的答案是6 + 8 +9。(如果您熟悉此方法,则与Killer Sudoku相同)。 有时您还会有其他信息,例如无法显示数字1 ,因此仅用2个数字就获得8,则只能使用2 + 6和3 + 5(不能使用4 + 4,因为它们是不明显)。另外,也可能是您已经在解决方案中找到3,所以像3中19这样的数字必须是3 + 7 + 9。 您的任务是编写一个程序,该程序以严格的顺序和严格的布局列出给定问题的所有可能解决方案。 输入值 您的解决方案可以通过stdin,命令行参数,函数的参数,堆栈上的值或您喜欢的深奥语言所采用的任何疯狂方式,将输入作为单个ASCII字符串接收。字符串形式为 number_to_achieve number_of_numbers_required list_of_rejected_numbers list_of_required_numbers 前两个参数是典型的以10为底的非负非零整数,分别在1到45和1到9的范围内(使用小数点将是无效的输入),这两个列表只是数字串在一起而在没有重复的特定顺序,如果为空列表则为'0'。列表之间不能有共享数字(0除外)。分隔符是单个空格。 输出量 您的输出必须以包含可能的解决方案数量的一行开头。您的程序必须打印出以换行符分隔的解决方案,这些解决方案按每个递增的有效数字进行排序,其中每个数字都位于您列出从1到9的数字的位置。下面的示例有望使这一点更加清楚。 如果提供了无效的输入,我不在乎您的程序会做什么,尽管我希望它不会将引导扇区清零。 例子 对于此示例输入 19 3 0 0 预期的输出将是 5 2 89 3 7 9 4 6 9 4 78 56 8 …

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 …

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。

5
使用ASCII艺术显示长乘法
挑战 编写一个程序,该程序从标准输入中获取两个整数,并用逗号分隔,然后将这两个整数的长倍乘积打印到标准输出中。 例如: 输入值 14, 11 程序输出 14 x11 _____ 14 14 ______ 154 输入值 -7, 20 程序输出 -7 x20 _____ 00 14 _____ -140 假设输入和数字始终在[-999,999]范围内正确 获奖标准 最短的代码胜出!

5
这个金字塔拼图是否有独特的解决方案?
给定加法金字塔PPP,确定是否可以求解。加法金字塔由层组成,每层的个数比其下层的少。层iii表示为PiPiP_i。P1P1P_1是基础层,和Pi+1Pi+1P_{i+1}是顶上层PiPiP_i。P i的第jjj个数表示为P i ,j。P 我,1是最左边的数P 我,和P 我PiPiP_iPi,jPi,jP_{i,j}Pi,1Pi,1P_{i,1}PiPiP_iPi,j+1Pi,j+1P_{i,j+1}是Pi,jPi,jP_{i,j}右边的数字。你可能想象Pi+1,jPi+1,jP_{i+1,j}驻留在顶部Pi,jPi,jP_{i,j}和Pi,j+1Pi,j+1P_{i,j+1}在中间,故名“除了金字塔”。 ∀Pi,j,Pi,j∈N∗∀Pi,j,Pi,j∈N∗\forall P_{i,j},P_{i,j}\in\mathbb N^*,即,在金字塔的每个数字是非零正整数。 ∀i>1,Pi,j=Pi−1,j+Pi−1,j+1∀i>1,Pi,j=Pi−1,j+Pi−1,j+1\forall i>1,P_{i,j}=P_{i-1,j}+P_{i-1,j+1},即,不金字塔的基层上的每个数字是在它下面的两个数的总和。 如果P1P1P_1具有nnn个数,则PiPiP_i具有n−i+1n−i+1n-i+1个数,因此Pi,n−i+1Pi,n−i+1P_{i,n-i+1}是PiPiP_i的最右边的数。用更简单的术语来说,每一层都比其下一层少一个数字。 一个除了金字塔拼图 QQQ是加法金字塔去掉一些数字(替换为???)。它的解决方案是一个金字塔除了PPP,其中∀Qi,j≠?,Pi,j=Qi,j∀Qi,j≠?,Pi,j=Qi,j\forall Q_{i,j}\ne{?},P_{i,j}=Q_{i,j},也就是说,拼图中原来存在的数字保持不变。这种难题可能有多个解决方案。 给定您一个额外的金字塔难题,您的工作将确定它是否只有一个解决方案。 输入值 您可以采用以下任何形式获取输入,但要保持一致: 层数组。 层状数组,形状像金字塔,使用一致的非正整数值作为元素之间的分隔符(每次仅使用一次)以及左右填充。分隔符和填充必须相同。 具有一致的有效左右填充的图层阵列(您必须保持一致,并且在这种情况下不要混合左右填充)。 请注意,必须使用不是严格正整数的一致值来表示缺失的数字;此值不能用作填充。另外,您可以将已连接的图层(仍然可以将它们分开),并且排序可以从底部到顶部,也可以从顶部到底部。 输出量 两个一致的不同值之一,其中一个表示唯一溶液的存在,另一个表示不存在溶液或不止一种溶液的存在。 规则 Qi+1,j=Qi,j+Qi,j+1Qi+1,j=Qi,j+Qi,j+1Q_{i+1,j}=Q_{i,j}+Q_{i,j+1}总是为真,如果Qi,j,Qi,j+1,Qi+1,j∈N∗Qi,j,Qi,j+1,Qi+1,j∈N∗Q_{i,j},Q_{i,j+1},Q_{i+1,j}\in\mathbb N^*,即,输入如果知道所有三个数字,则保证不会在其他两个数字之上不包含一个数字,这些数字不是它们的总和。 ∃Qi,j,Qi,j≠?∃Qi,j,Qi,j≠?\exists Q_{i,j},Q_{i,j}\ne{?},即金字塔将包含至少一个已知数。 不要做这些事情。 这是代码高尔夫球,所以最短的答案会成功!但是,不要因为您的语言“太冗长”而阻止您发布解决方案。 测试用例 这些测试用例使用从上到下各层的数组,0表示???。 [[10], [0, 0], [0, 2, 0], [0, 0, 0, 1]] -> True [[32], [0, 0], [0, …

9
评估第n个超手术
我的确意识到这有点数学,但是-来了。 在数学中,超运算序列是无限的算术运算序列(称为超运算),从后继的一元运算开始,然后以加法,乘法和乘幂运算的二进制运算继续,此后,该序列继续进行进一步的二进制运算,其范围超出使用右联想进行求幂。 您的目标是编写一个程序,该程序将三个整数x,y和n作为输入,并输出x和y上第n个超级运算的结果。 例如 1 1 1 输出2 2 4 4 输出65536 3 3 4 输出7625597484987 该程序必须用最短的代码编写。 您可以STDIN从文件或从文件中获取输入。 不允许使用库函数。 输入约束:n将≥1。 http://en.wikipedia.org/wiki/Tetration提供了很好的解释,以防您无法解决这个问题。

2
数论解释器,模n
一个句子数论(我们的目的)的是下列符号序列: 0和'(后继) -后继手段+1,所以0'''' = 0 + 1 + 1 + 1 + 1 = 4 +(加法)和*(乘法) = (等于) (和)(括号) 逻辑运算符nand(a nand b是not (a and b)) forall (通用量词) v0,v1,v2等。(变量) 这是一个句子的示例: forall v1 (forall v2 (forall v3 (not (v1*v1*v1 + v2*v2*v2 = v3*v3*v3)))) 这not x是简写x nand x-实际的句子会用到(v1*v1*v1 + v2*v2*v2 = v3*v3*v3) nand …
12 code-golf  number-theory  parsing  code-golf  kolmogorov-complexity  code-golf  code-golf  array-manipulation  matrix  code-golf  array-manipulation  code-golf  string  code-challenge  graphical-output  compression  code-golf  kolmogorov-complexity  code-golf  sequence  array-manipulation  code-golf  number  base-conversion  code-golf  string  decision-problem  code-golf  string  ascii-art  code-golf  string  random  code-challenge  brainfuck  code-generation  code-golf  code-golf  quine  code-golf  interpreter  code-golf  interpreter  code-golf  array-manipulation  sorting  code-golf  halting-problem  code-golf  javascript  code-golf  algorithm  code-golf  arithmetic  code-golf  math  counting  code-golf  math  code-golf  decision-problem  radiation-hardening  code-golf  conversion  bitwise  code-golf  number  decision-problem  code-golf  string  decision-problem  code-golf  random  game  code-golf  ascii-art  graphical-output  code-golf  decision-problem  binary-tree  tree-traversal  code-challenge  array-manipulation  code-challenge  graphical-output  path-finding  test-battery  algorithm  code-golf  integer  factorial  code-golf  binary-tree  code-golf  grid  graph-theory  code-golf  regular-expression  quine  code-golf  encoding  code-golf  king-of-the-hill  javascript 

1
不只是一个四肢难题
在该方案中的4个4困扰你应该使用最多x x's(并且没有其他号码),并定义了一组操作的从0达到每号为100。如果x = 4那么你可以使用多达四个4s,这问题就变成经典的4个4拼图(除非您最多可以使用四个4,而不必只使用四个)。我们假设1 < x <= 9。 在此版本中,仅允许以下运算符: 加法(+),减法(-),乘法(*),除法(/)。请注意,这是实数除法,因此5/2 = 2.5。 求幂(例如4 ^ 4),因为如果用手工正常书写,将不涉及任何多余的符号。 您可以通过串联创建新的整数xs。例如,您可以使整数4, 44, 444, 4444。 您也可以仅使用括号将数字分组,以控制运算符的求值顺序。例如,您不能像那样将括号与串联结合在一起(4/4)(4/4) = (1)(1) = 11。 不得使用其他符号,并且适用标准的操作顺序。 如果输入x在定义的范围内且n介于两者之间0(100包括两端),则程序应为该输入生成正确的解决方案(如果存在)。否则,您的代码必须输出某些内容以指示不存在此类解决方案。 您必须能够在允许范围内的任何输入值下x,n在计算机上运行提交以完成操作。这就是代码高尔夫,因此最短的解决方案将获胜。 这个古老的相关问题使用更多的运算符(只有4s),因此从0到100的所有数字都是可解的,因此对于此挑战而言并非如此。 输入输出 您的代码需要两个整数x并n作为输入和输出应该解决(或者指示没有解决)在您方便的任何人类可读的格式。例如,输入4 6将意味着“使用最多四个4,使数字为6”。因此,如果输入为4 6输出,则可能为(4+4)/4+4。

20
Sumac序列的长度[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 2年前关闭。 Sumac序列以两个整数开头:t 1和t 2。 下一项t 3 = t 1 -t 2 更一般而言,t n = t n-2 -t n-1 当t n <0 时,序列结束。 您面临的挑战:编写一个程序或函数来打印Sumac序列的长度,从t 1和t 2开始。 t 1和t 2是您语言范围内的整数。 有标准漏洞。 测试用例 t1 t2 sumac_len(t1,t2) 120 71 5 101 42 3 500 499 4 387 1 3 奖励街头信誉: 3 -128 …

15
反复互惠
您需要做的是创建一个将小数作为输入的函数/程序,并输出重复取数字小数部分的倒数的结果,直到数字变成整数。 更具体地说,过程如下: 令x为输入 如果x是整数,则将其输出。 否则:x ← 1Fr a c(x)X←1个F[R一种C(X)x \leftarrow \frac{1}{\mathrm{frac}(x)}。回到2。 Fr a c(x)F[R一种C(X)\mathrm{frac}(x)是的小数成分XXx,并且等于X - ⌊ X ⌋X-⌊X⌋x - \left\lfloor x \right\rfloor。⌊ X ⌋⌊X⌋\left\lfloor x \right\rfloor是x的地板上,这是最大的整数小于XXx。 测试用例: 0 = 0 0.1 = 1/10 -> 10 0.2 = 1/5 -> 5 0.3 = 3/10 -> 10/3 -> 1/3 -> 3 0.4 …

7
两个数字是否包含唯一的阶乘?
将两个数字分解为阶乘;如果它们共享任何一个,则返回一个false值。否则,返回真实值。(受到最近这个问题的启发) 换句话说,以最贪婪的方式将每个输入数字写为(正整数的)阶乘和。如果两个表示中都没有阶乘出现,则返回真实值,否则返回假值。 例 鉴于20和49: 20 = 3! + 3! + 3! + 2! 49 = 4! + 4! + 1! 在这两种表示中都没有阶乘出现,因此返回真实值。 鉴于32和132: 132 = 5! + 3! + 3! 32 = 4! + 3! + 2! 3!在两种表示形式中均出现,因此返回假值。 输入输出 输入和输出可以通过任何标准方式进行。 输入将始终是两个非负整数;这些整数没有您的语言要求的上限。 输出应为真值或假值。只要每个输出正确地为真/假,这些值对于不同的输入不一定必须是一致的。 测试用例 如果输入为0,则答案将始终是真实的。其他真实测试用例: {6, 3}, {4, 61}, {73, 2}, {12, …

6
逐位计算指数
您的任务是按照以下步骤缓慢计算幂运算: 给定两个输入(在此示例中为4和8),您必须通过逐位计算方程来计算幂。您会做的4^8,具有更大的基值(4)和较小的指数(8)。您可以使用更多的幂和除法来执行此操作。您可以将指数除以值X(假设X是指数的质数),然后将基值(B)设为B^X。例如,您可以执行以下操作: 4^8 = (4 ^ 2)^(8 / 2) = 16^4 我在前面的方程式中将X替换为2。 您可以16^4再次通过X = 2以下方式进一步“简化” : 16^4 = (16 ^ 2)^(4 / 2) = 256^2 然后最后计算一个数字(再次是X = 2): 256^2 = (256 ^ 2)^(2 / 2) = 65536^1 = 65536 因此, 4^8 = 16^4 = 256^2 = 65536 这是您应该提供的输出。输出分隔符有点灵活,例如,您可以用换行符或空格代替来分隔方程式=。或者,您可以将它们放入列表中(但不能使用数字或^字符作为分隔符)。 正如马丁·恩德(Martin Ender)所指出的那样,^它也很灵活。例如,您可以在输出中使用[A, …

2
解释重复!
这项挑战是有关重复的两个挑战系列中的第一个。第二个即将到来。 在一种叫做重复的语言(我刚刚写的东西)中,包含一个无限的字符串12345678901234567890...,带有1234567890永远重复。 以下语法可用于输出数字: +-*/:这会将运算符插入重复数字的字符串中。 例子: +-> 1+2= 3(在和之间+插入一个)+12 +*-> 1+2*3= 1+6= 7(与上面相同,但现在使用两个运算符) /-> 1/2= 0(重复使用整数除法) //-> 1/2/3= 0/3= 0(重复使用带有多个减法和除法的“左关联”) 插入每个运算符时,除非有,否则它的左边有一位数字c(请参阅下文)。 c:与字符串中的下一位数字连接。 例子: c+-> 12+3= 15(c“继续” 1并将其与下一位数字串联起来2,形成12) +c-> 1+23=24 ccc -> 1234 ():用于处理数字的括号。 例子: (c+)*-> (12+3)*4= 15*4= 60(重复使用操作顺序) (c+)/c-> (12+3)/45= 15/45=0 (cc+c)/-> (123+45)/6= 168/6=28 s:跳过数字(从无限字符串中删除数字)。 s+-> 2+3= 5(s跳过1) csc- > 124(第一cconcats …

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.