Questions tagged «arithmetic»

与基本算术有关的挑战。

27
扩大数量
您可能还记得在一年级或二年级时使用扩展形式来了解数字的位数。举个例子更容易解释,所以考虑数字123。以扩展形式表示为100 + 20 + 3,可帮助年轻的头脑可视化地方价值。这让人想起你怎么说:一百(加)二十(加)三。 我们可以将其扩展到小数点后的单位位置: 2.718 => 2 + 0.7 + 0.01 + 0.008 您面临的挑战是编写一个程序或函数,该程序或函数的浮点数应为正数或零(假设它的大小等于您的语言可以处理的大小或精确度;它不会采用科学计数法)或字符串,然后以扩展形式打印/返回它如上所述。 +小数点前的或零之间都不需要空格,因此上面的示例可能是2+.7+.01+.008。101.01 => 100 + 1 + 0.01除非输入为零(请参见下文),否则必须忽略等于零的值()。 值的小数点前不应有多个前导零,或小数点后不得有任何尾随零(否,即:)0060, 0000.2, 30., 30.000, .0400。输入也将与此一致。 由于一年级学生的注意力跨度很短,因此您的代码必须尽可能短。 测试用例 0 => 0 6 => 6 0.99 => 0.9 + 0.09 24601 => 20000 + 4000 + 600 + 1 …

8
做蛇蛇之吻
一条可弯曲的蛇看起来像这样: <||=|||:)~ 垂直条(每个单独序列|)是一个弹性的蛇,被称为一个有弹性的部分,是单独地可伸展到它的宽度的两倍,并绘制具有交替斜杠(/,\)一次延长。 上面特定的蛇有两个这样的伸展部分,给它四个可能的姿势: <||=|||:)~ </\/\=|||:)~ <||=/\/\/\:)~ </\/\=/\/\/\:)~ 此正则表达式定义了伸展最少的伸展蛇的一般形式: <(\|+=)*\|+:\)~ 可以用以下文字表示: <,随后通过任何数目的序列|的连接与=迹象,随后:)~。 So <|:)~and <||:)~and <|=|:)~and <|=|=||=|||||=||:)~是可弯曲的蛇,而<=:)~and <=|:)~and <||=:)~and <|==||:)~不是。 易弯曲的蛇也可以朝左而不是朝右,例如~(:|||=||>。形式是一样的,只是被镜像。 挑战 编写一个程序,该程序使用两条彼此面对的伸缩性蛇的单行字符串,中间留有一定数量的空格。两条蛇都将处于其伸展最少的姿势(所有竖线,无斜线)。字符串将从右向蛇的尾部开始,然后从左向蛇的尾部结束(您可以选择假设还有尾随换行符)。 例如,这是一条可能的输入,在蛇之间有五个空格: <|=||:)~.....~(:||||> .为了清楚起见,我使用句点()而不是实际的空格字符。 蛇之间的零间距也是有效的输入: <|=||:)~~(:||||> 我们说蛇在舌头这样触摸时在亲吻。 您的程序需要扩展两条蛇的可拉伸部分的某种组合,以使蛇之间的间隔最少(不重叠),即蛇尽可能接近接吻。 两条蛇的尾巴都是固定的,但它们的头部和身体可以移动-根据伸展的部分,向右移动,向右移动,向左移动。 程序的输出是单行字符串(加上可选的尾随换行符),该字符串显示蛇尽可能接近接吻的位置,并为延伸的可伸展部分绘制交替的斜线代替竖线。 例如,<|=||:)~.....~(:||||>(从上面)的输出为: </\=||:)~~(:/\/\/\/\> 这是唯一的解决方案,因为在伸展部分的任何其他组合下,蛇会重叠或离接吻更远。 如果有多种解决方案,则输出可能是其中任何一种。 例如,如果输入是 <|=||:)~.....~(:|||=|> 输出可能是 <|=/\/\:)~~(:/\/\/\=|> 要么 </\=||:)~~(:/\/\/\=/\> 请记住,并非总是能够使蛇亲吻,但是您仍然需要使它们尽可能靠近。 例如,如果输入是 <||=||||:)~...~(:||> 输出可能是 </\/\=||||:)~.~(:||> 要么 <||=||||:)~.~(:/\/\> 如果蛇已经在接吻,则输出将与输入相同。例如 …

30
打印N平方
编写一个从stdin或函数参数中获取非负整数N的程序或函数。它必须打印或返回一个空心的ASCII艺术方块的字符串,该字符串的侧面各有N个数字N的副本。 特别: 如果N为0,则不使用N的副本,因此应该没有输出(或只有一个尾随的换行符)。 如果N为1,则输出为: 1 如果N为2: 22 22 如果N为3: 333 3 3 333 如果N为4: 4444 4 4 4 4 4444 如果N为5: 55555 5 5 5 5 5 5 55555 模式将持续6到9。 如果N为10,则输出为: 10101010101010101010 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10101010101010101010 请注意,这实际上不是正方形。它高10行,但宽20列,因为10它长两个字符。这是有意的。关键是“正方形”的每一侧都包含N的N个副本。因此,从9技术上讲,所有其他输入都是ASCII矩形。 …

30
亚历克斯风格的加法
受亚历克斯(Alex)光荣的启发,学习R成为一个很好的例子,我们将谦虚地重建亚历克斯(Alex)的“一个真正的R程序”-但要有所作为。 Alex风格的加法就是这样的-它有90%的机会简单地返回给定的两个数字的和,还有10%的机会递归Alex加上第一个数字和第二个数字+1。这意味着,潜在地,则相加可能相差1或更多。 挑战 编写一个完整的程序或函数,该程序或函数需要两个整数并按定义将它们相加。您可以假设如果您的语言没有尾递归,则程序不会堆栈溢出。(请注意,只要概率相同,就不必递归实现它。) 参考实现(Groovy) int alexAdd(int a, int b) { int i = new Random().nextInt(11); if(i == 1) { return alexAdd(a,b+1); } else { return a + b; } } 在线尝试这个小提琴。 排行榜 var QUESTION_ID=66522,OVERRIDE_USER=8478;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var …

10
小钱德勒很伤心。画他的云,使他振作起来
小钱德勒很伤心。画他的云使他振作起来。 注意:画云实际上不会使他振作起来。 圆可以定义为三元组(x,y,r),其中x是圆在笛卡尔平面上的x位置,是圆在笛卡尔平面y上的y位置以及圆r的半径。x并y可能是负面的。r永远是积极的。输入是以空格分隔的三元组形式的圆的列表。例如: 3,1,1 3,2,1.5 1,2,0.7 0.9,1.2,1.2 1,0,0.8 的3,1,1意思是“在与中心点的圆3,1与1个半径。3,2,1.5是指”在与中心点的圆3,2用1.5半径。 如果我们在图形上绘制输入的所有这些圆,则看起来像这样(我仅出于清晰起见添加了网格线和标签;它们不是必需的): 注意所有的圆是如何凝聚的。也就是说,它们全部重叠在一起,从而形成一个大的组,而没有其他的小圈子。输入保证是内聚的。 假设现在绘制一条绕这些圆形成的“边界”行进的线,而没有其他任何线。就像绘制所有圆组成的轮廓的边界一样。生成的云看起来像这样: 因此,仅通过在输入中绘制形成边界的圆弧来形成单一形状即可形成此云。换句话说,仅通过绘制不在另一个圆内的圆弧来形成云。您的程序将以上述形式接受输入,并输出显示结果云的图像。云的整体形状必须正确,但是比例,颜色,线条粗细以及在顶点处的外观取决于您。请注意,云必须是可见的,因此您不能拉出类似“此程序在白色背景上绘制白色云”,“此程序以无限小的比例绘制云”,“此程序以0绘制云”之类的内容。线宽”等。还请注意,边框的颜色必须与填充或背景的颜色不同。 另一个例子。输入: 1,4,2 5,2,1 3,1,1 3.5,2,1.2 3,3,0.7 1,2,0.7 输出: 如果云中存在“洞”,则也应绘制该洞。输入: 0,5,4 3,4,4 4,3,4 5,0,4 4,-3,4 3,-4,4 0,-5,4 -3,-4,4 -4,-3,4 -5,0,4 -4,3,4 -3,4,4 输出: 这是一条重要规则:您的程序必须仅绘制形成边框的线。这意味着您不能简单地完全绘制圆,然后用白色填充将圆绘制得稍小一些,因为该方法仍会绘制不形成边界的线,之后只会将其覆盖。该规则的目的是防止“绘制圆,然后用白色填充再次绘制圆”的实现或类似的方法。预计答案将在绘制之前实际计算出绘制对象的位置。 这是代码高尔夫球,因此最短的字符数获胜。

22
丹尼斯数字2.0
PPCG用户和当选mod,@ Dennis成为有史以来第二个收入超过10万的用户! 这是一个完全原始的想法,我没有从其他任何人那里得到,但是让我们根据他的用户ID进行挑战,12012以示敬意! 查看它,您会注意到他的ID有两个不同的“部分”。 12 和 012 这两个部分的总和为3。这是一个非常有趣的属性。 让我们将“ Dennis 2.0数字”定义为任何正整数,其中严格增加的数字的每个最大子序列加总为相同的数字。例如, 123 是Dennis 2.0的数字,因为只有一个严格增加数字的最大子列表,它的总和为6。另外,2,846,145也是Dennis 2.0的数字,因为三个增加的数字最大子列表,即 28 46 145 总计为10。此外,仅重复相同数字的数字必须是Dennis 2.0数字,因为例如777可以细分为 7 7 7 其中明确所有总和为7。 一些诸如42是不一个丹尼斯2.0数量,因为它被分解成 4 2 显然,它们的总和并不相同。 挑战 您必须编写程序或函数来确定给定数字是否为Dennis 2.0数字。您可以采用任何合理的输入格式进行输入和输出,例如从文件,函数参数/返回,STDIN / STDOUT等中以字符串,数字形式输入,然后如果该数字是Dennis 2.0 ,则返回真实值。数字,如果不是,则为假值。作为参考,以下是每个Dennis 2.0编号(最多1,000个): 1 2 3 4 5 6 7 8 9 11 12 13 14 15 …

30
禁止内置
在标准漏洞中,禁止以下行为: 声称您的答案是用“ MyOwnLanguage”编写的,该命令的x意思是“读取数字序列,将它们分成三组,并打印第二组小于第一个的那些组的最后一个数字” 在这里,我们将做完全相同的事情。 任务 给定一个正整数序列(其长度可被3整除),将它们分为三组,并打印第二组小于第一个的那些组的最后一个数字。 测试用例 Input Output [] [] [1,2,3,4,5,6,7,8,9] [] [2,1,3,5,4,6,8,7,9] [3,6,9] [3,1,4,1,5,9,2,6,5] [4] [100,99,123] [123] [123,123,456] [] [456,123,789] [789] 计分 这是代码高尔夫球。以字节为单位的最短答案将获胜。 存在标准漏洞,因此请记住不要使用内置命令x来执行此任务。

12
5、2、16、3580,接下来是什么?
考虑十进制的五的正整数幂。这是前25个,右对齐: X 5^X 1 5 2 25 3 125 4 625 5 3125 6 15625 7 78125 8 390625 9 1953125 10 9765625 11 48828125 12 244140625 13 1220703125 14 6103515625 15 30517578125 16 152587890625 17 762939453125 18 3814697265625 19 19073486328125 20 95367431640625 21 476837158203125 22 2384185791015625 23 11920928955078125 24 …

30
通过减去最大除数从n到1需要多少步?
这个问题的灵感来自数学。 问题 我们n是一个自然数≥ 2。取最大除数(n与n自己不同)除以n。重复直到得到1。 问题 达到1给定数字需要多少步骤n ≥ 2。 详细的例子 让n = 30。 最大除数: 1. 30 is 15 --> 30 - 15 = 15 2. 15 is 5 --> 15 - 5 = 10 3. 10 is 5 --> 10 - 5 = 5 4. 5 is 1 --> 5 - …

30
用于验证信用卡号等的Luhn算法
挑战 编写最短的程序或函数以计算用于验证(信用卡)号码的Luhn算法。 Luhn算法解释 在RosettaCode中,为此挑战指定了该算法,其示例输入为49927398716: Reverse the digits, make an array: 6, 1, 7, 8, 9, 3, 7, 2, 9, 9, 4 Double the numbers in odd indexes: 6, 2, 7, 16, 9, 6, 7, 4, 9, 18, 4 Sum the digits in each number: 6, 2, 7, 7, 9, 6, …

30
井中的蜗牛
背景 有一个常见的谜语,像这样: 一只蜗牛在30英尺深的井底。蜗牛每天都能爬3英尺。晚上睡觉时,它们会向后滑动2英尺。蜗牛要离开井需要多少天? 直观的答案是 30天,因为蜗牛每天以1英尺的高度爬30天才能到达山顶, 但实际上答案是 28天,因为一旦蜗牛悬空了27英尺(27天之后),他们将在28天简单地将剩下的3英尺爬到顶部。 挑战 这个挑战笼罩了这个谜语。给定三个正整数作为输入,代表总高度,爬升高度和下降高度,返回从井中爬升所需的天数。 如果蜗牛不能爬出井,则可以返回0,返回假值或引发异常。您也可以编写仅当存在解决方案时才会停止的代码。 如果愿意,可以将跌落高度作为负整数。 测试用例 (30,3,2)-> 28 (84,17,15)-> 35 (79,15,9)-> 12 (29,17,4)-> 2 (13,18,8)-> 1 (5,5,10)-> 1 (7,7,7)-> 1 (69,3,8)->无 (81,14,14)->无 计分 这是代码高尔夫球,因此每种语言中最短的答案将获胜。

23
破解选举
您是专业的黑客,您的老板刚刚下令您帮助候选人赢得即将举行的选举。您的任务是更改投票机数据以提高候选人的成绩。 投票机将投票结果存储为两个整数:候选人v1的投票数()和对手的投票数(v2)。 经过数周的研究,您已经在系统中发现一个安全漏洞,您可以将a的值增加v1一个整数x,而将a的值减少v2一个same x。但是有一个约束,您必须保持安全性哈希码不变: 安全哈希码: (v1 + v2*2) modulo 7 另外,的值x必须最小,这样您的更改才能被忽略。 你的程序应该接受作为输入v1和v2; 它应该输出的最佳值,x所以v1>v2。 在某些情况下,您无法破解结果。您不必处理它们(这可能会导致老板遇到问题,但这是另一回事了)。 测试用例 100,123 --> 14 47,23 --> 0 40,80 --> 21 62,62 --> 7 1134,2145 --> 511

30
乘法持久性
乘法持久性 将一个数字中的所有数字相乘 重复直到您剩下一位数 正如Numberphile解释的那样: Numberphile “ 277777788888899有什么特别之处?” Numberphile “乘法持久性(额外镜头)” 例 277777788888899→2x7x7x7x7x7x7x8x8x8x8x8x8x9x9 = 4996238671872 4996238671872→4x9x9x6x2x3x8x6x7x1x8x7x2 = 438939648 438939648→4x3x8x9x3x9x6x4x8 = 4478976 4478976→4x4x7x8x9x7x6 = 338688 338688→3x3x8x6x8x8 = 27648 27648→2x7x6x4x8 = 2688 2688→2x6x8x8 = 768 768→7x6x8 = 336 336→3x3x6 = 54 54→5x4 = 20 20→2x0 = 0 顺便说一下,这是当前记录:最小的数字和最大的步数。 高尔夫球 该程序以任何整数作为输入,然后从输入本身开始输出每个步骤的结果,直到我们碰到一位数字为止。对于277777788888899,输出应为 277777788888899 4996238671872 438939648 4478976 …

30
没有3的计数
背景 当我上小学时,我们以前在数学课上玩游戏,内容如下。 所有的孩子围成一个大圈,从1开始轮流计数。 但是,在计数时必须跳过以下数字: 是3的倍数的数字。 十进制表示形式为3的数字。 孩子们应该说的前15个数字是 1 2 4 5 7 8 10 11 14 16 17 19 20 22 25 每当有人输入错误的数字(说出顺序不正确的数字或​​跳过出现的数字)时,他就会从圈子中删除。这一直持续到只剩下一个孩子为止。 任务 您在这场比赛中表现不佳,因此决定作弊。编写一个给定序列号的程序或函数,以计算序列的下一个数。 您不必处理无法使用您的语言的本机数字类型表示的数字,只要您的程序在输入251之前可以正常工作,并且您的算法可以在任意大的输入下使用。 输入和输出可以使用任何方便的基础。 由于您必须隐藏代码,因此代码必须尽可能短。实际上,这是code-golf,因此以字节为单位的最短代码获胜。 测试用例 1 -> 2 2 -> 4 11 -> 14 22 -> 25 29 -> 40 251 -> 254

20
大于小于大于大于可疑
给定的一个长度为N的字符串小于和大于号(<,>),插入在所述开始和结束整数0至N和在每对的迹象,使得所有的不等式得到满足的之间。输出结果字符串。如果有多个有效输出,则输出其中任何一个(也只有一个)。 例如 <<><><< 有7个字符,因此必须插入0到7之间的所有数字。有效输出为 2<3<4>1<5>0<6<7 因为所有不等式一次都发生了 2<3 3<4 4>1 1<5 5>0 0<6 6<7 是真的。 如果需要,输出可以在符号周围有空格,例如2 < 3 < 4 > 1 < 5 > 0 < 6 < 7。 以字节为单位的最短代码获胜。 测试用例 空行之后的第一行是输入,下一行是有效的输出示例。 [empty string] 0 < 0<1 > 1>0 << 0<1<2 <> 1<2>0 >< 1>0<2 2>0<1 >> 2>1>0 <<< 0<1<2<3 …

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.